Python pandas leer Korrelationsmatrix
Ich bin mit Python 2.7.6, pandas 0.13.1. Ich bin nicht in der Lage zur Berechnung der Korrelationsmatrix aus einem DataFrame, und ich bin nicht sicher, warum. Hier ist mein Beispiel 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]
Jetzt werde ich versuchen, berechnen Sie die Korrelation:
In [27]: foo.corr()
Out[27]:
Empty DataFrame
Columns: []
Index: []
[0 rows x 0 columns]
Auf der anderen Seite kann ich berechnen, Korrelationen von jeder Spalte zu jeder anderen Spalte. Zum Beispiel:
In [31]: foo['A'].corr(foo['B'])
Out[31]: 0.048578514633405255
Jede Idee, was könnte dieses Problem verursacht werden? Vielen Dank.
Version Info
In [34]: import pandas as pd
In [35]: pd.__version__
Out[35]: '0.13.1'
- Welche version verwenden Sie?
df = pd.DataFrame(np.random.randn(10,3), columns=list('ABC'), index=pd.date_range('2012-01-01', periods=10)); df.corr()
funktioniert für mich. - Dein Beispiel funktioniert bei mir auch.
- sieht aus wie Sie haben
object
"dtype" Daten (siehe die Schwimmer sind nicht angetreten). eineastype(float)
oder noch besser: Woher stammen die Daten? pls postfoo.dtypes
- Ahh... gute fangen, Jeff! Das ist Recht seltsam. Ich bin mir nicht sicher, wie die Daten transformiert, um ein Objekt geben, ich werde aber sicherlich haben zu Graben in. Vielen Dank für die Zeiger.
- Wow, Jeff, thanks a lot. Ich hatte ein ähnliches problem, da hatte ich die Decimal-Objekte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Jeff erwähnt in den Kommentaren, das problem ergab sich aus meinen Spalten mit der
object
dtype. Für die Zukunft, auch wenn das Objekt sieht numerische, überprüfen Sie die "dtype" und stellen Sie sicher, es ist numerisch (z.B.foo.astype(float)
) vor dem berechnen der Korrelationsmatrix.