我正在运行Python 2.7.6,pandas 0.13.1。我无法从DataFrame计算相关矩阵,我不知道为什么。下面是我的示例DataFrame(foo
):
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
现在我将尝试计算相关性:
In [27]: foo.corr()
Out[27]:
Empty DataFrame
Columns: []
Index: []
[0 rows x 0 columns]
另一方面,我可以计算每列与其他列的相关性。例如:
foo['A'].corr(foo['B'])
# 0.048578514633405255
您知道是什么原因导致此问题吗?
2条答案
按热度按时间3b6akqbq1#
正如Jeff在评论中提到的,问题是由于我的列具有
object
dtype。为了将来的参考,即使对象看起来是数字,在计算相关矩阵之前检查dtype并确保它是数字(例如,执行foo.astype(float)
)。eqqqjvef2#
从pandas 1.5.0开始,
corr()
有一个numeric_only=
参数。如果dataframe中的值可以安全地转换为浮点数,即如果df.astype(float)
不会引发错误,则设置numeric_only=False
使corr()
适用于对象/字符串/Decimal数据。示例: