【问题标题】:Python pandas empty correlation matrixPython pandas 空相关矩阵
【发布时间】:2020-10-01 14:45:41
【问题描述】:

我正在运行 Python 2.7.6、pandas 0.13.1。我无法从 DataFrame 计算相关矩阵,我不知道为什么。这是我的示例数据框:

In [24]: foo
Out[24]:
                       A             B            C
2011-10-12   0.006204908 -0.0009503677  0.003480105
2011-10-13    0.00234903 -0.0005122284 -0.001738786
2011-10-14    0.01045599   0.000346268  0.002378351
2011-10-17   0.003239088   0.001246239 -0.002651856
2011-10-18   0.001717674 -0.0001738079  0.002013923
2011-10-19  0.0001919342  6.399505e-05 -0.001311259
2011-10-20  0.0007430615   0.001186141  0.001919222
2011-10-21   -0.01075129    -0.0015123  0.000807017
2011-10-24   -0.00819597 -0.0005124197  0.003037654
2011-10-25   -0.01604287   0.001157013 -0.001227516

[10 rows x 3 columns]

现在我将尝试计算相关性:

In [27]: foo.corr()
Out[27]:
Empty DataFrame
Columns: []
Index: []

[0 rows x 0 columns]

另一方面,我可以计算每列与其他列的相关性。例如:

In [31]: foo['A'].corr(foo['B'])
Out[31]: 0.048578514633405255

知道是什么导致了这个问题吗?非常感谢。

版本信息

In [34]: import pandas as pd

In [35]: pd.__version__
Out[35]: '0.13.1'

【问题讨论】:

  • 你用的是什么版本? df = pd.DataFrame(np.random.randn(10,3), columns=list('ABC'), index=pd.date_range('2012-01-01', periods=10)); df.corr() 对我有用。
  • 你的例子也适用于我。
  • 看起来你有 object dtype 的数据(请参阅浮动未排列)。做一个astype(float),或者更好的是数据来自哪里?请发帖foo.dtypes
  • 啊...杰夫抓得好!这很奇怪。我不确定数据是如何转换为对象类型的,但我肯定要深入研究。非常感谢您的指点。
  • 哇,杰夫非常感谢。我遇到了类似的问题,因为我有 Decimal 对象。

标签: python pandas


【解决方案1】:

正如 Jeff 在 cmets 中提到的,问题是由于我的列具有 object dtype。为了将来参考,即使对象看起来是数字,在计算相关矩阵之前检查 dtype 并确保它是数字的(例如,做foo.astype(float))。

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多