【问题标题】:pandas df.corr() returns NaN despite data fed having populated datapandas df.corr() 尽管输入的数据已填充数据,但仍返回 NaN
【发布时间】:2015-03-13 21:53:23
【问题描述】:

我的数据如下所示:

print data

                   A                B 
2014-04-04        163.24         191.77
2014-06-11        165.43         182.25
2014-12-22        194.44         161.44
2014-03-25        163.25         195.04
2014-11-03        190.83         164.36
2014-06-16        165.85         182.35
2014-11-24        190.07         162.15
2014-05-21        159.35         186.39
2015-01-21        177.15         152.09
2014-08-28        177.65         192.00
2014-02-19        163.26         182.95
2014-05-12        159.55         192.57
2014-07-09        164.67         188.42
2015-02-26        192.20         160.87
2014-10-14        178.70         183.80
2014-07-16        170.47         192.36
2014-01-21        173.20         188.43
2014-06-03        161.80         184.37
2014-03-17        166.84         185.81
2014-08-11        172.46         187.47
2015-01-07        187.28         155.05
2014-05-29        160.74         183.76
2015-02-11        187.65         158.20
2014-02-27        165.38         185.27
2015-01-05        188.34         159.51
2014-07-01        166.81         186.35
2015-02-18        188.67         162.19
2014-04-03        166.09         192.69
2014-10-06        187.48         189.04
2014-12-29        196.19         160.51

当我尝试拨打data.corr() 时,我收到了所有NaN。我用excel测试了一下,确实可以计算出相关性。

知道为什么会这样吗?

我很高兴发布更多信息,但我不确定有什么帮助。

print data.info()

<class 'pandas.core.frame.DataFrame'>
Index: 298 entries, 2014-04-04 to 2014-01-29
Data columns (total 2 columns):
A     298 non-null float64
B    298 non-null float64
dtypes: float64(2)None



print data.describe()
              A                B
    count    298.000000     298.000000
    mean     175.152886     178.596242
    std       11.490668      13.709316
    min      152.720000     151.410000
    25%      165.502500     162.655000
    50%      175.480000     184.330000
    75%      185.085000     189.692500
    max      196.890000     197.770000


print pd.version
0.14.1

【问题讨论】:

  • 您能否编辑您的问题以包含df.info()df.describe()print(pd.__version__) 的输出?
  • @DSM 已发布。需要更多字符来限制长度。
  • @denvar 我看了看,我的两个标准差都对计算有效。
  • 你能显示实际的 NaN 结果吗?更新到 15.2 也无妨(顺便说一句,16.0 将在几天后推出)。可能无济于事,但除非您有充分的理由不这样做,否则还不如获取最新版本。您也可以尝试使用 np.corrcoef() 执行此操作,以查看是否有任何变化或是否收到信息性错误消息。

标签: python pandas


【解决方案1】:

Jason,使用示例数据对我来说效果很好。

data.corr()
    A   B
A   1.000000    -0.779864
B   -0.779864   1.000000

我注意到在您的 data.info() 中有一个“无”附加到 dtypes。当我加载您的示例数据时,我得到了

data.info()
<class 'pandas.core.frame.DataFrame'>
Index: 30 entries, 2014-04-04 to 2014-12-29
Data columns (total 2 columns):
A     30 non-null float64
B     30 non-null float64
dtypes: float64(2)

我想是什么导致“无”导致您的问题。

希望这会有所帮助[希望我可以发表评论,但还没有声誉!]

【讨论】:

  • 我也注意到了这一点。我该如何解决这个问题?
  • 您在显示的数据子集上是否遇到同样的问题?我想知道您是否只是以某种方式在数据中损坏了某些东西。理想情况下,对于故障排除,如果您可以将数据缩减到尽可能小的大小以保留问题并理想地在代码中创建数据(如果您从其他地方读取数据并且这实际上是源代码,则不可能)问题。
  • @EngineeredE:这就是问题所在。一旦我float()-ed 我的数据,它就完美地工作了。
猜你喜欢
  • 2019-05-09
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2023-04-03
相关资源
最近更新 更多