Berechnen Sie die Korrelation zwischen allen Spalten des DataFrame und alle Spalten von einem anderen DataFrame?
Ich habe einen DataFrame-Objekt stocks
gefüllt mit Lager zurück. Ich habe ein anderes DataFrame-Objekt industries
gefüllt mit der Industrie gibt. Ich möchte jede Aktie der Korrelation mit der jeweiligen Branche.
import numpy as np
np.random.seed(123)
df1=pd.DataFrame( {'s1':np.random.randn(10000), 's2':np.random.randn(10000) } )
df2=pd.DataFrame( {'i1':np.random.randn(10000), 'i2':np.random.randn(10000) } )
Den teuren Weg, dies zu tun ist, um die Zusammenführung der beiden DataFrame Objekte, berechnen einer Korrelation, und dann werfen alle den stock zu stock und von Branche zu Branche Korrelationen. Ist es ein effizienter Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und hier ist ein one-liner, die verwendet
apply
auf die Spalten und vermeidet verschachtelte for-Schleifen. Der Hauptvorteil ist, dassapply
baut das Ergebnis in einem DataFrame.Hier eine etwas einfachere Antwort, als JohnE ' s verwendet pandas nativ anstelle der Verwendung von numpy.corrcoef. Als zusätzlichen bonus, müssen Sie nicht zum abrufen der Wert der Korrelation aus einem dummen 2x2-Korrelationsmatrix, weil pandas-Serie-zu-Serie-Korrelations-Funktion gibt einfach eine Zahl, keine matrix.
(Bearbeiten hinzufügen: Statt diese Antwort bitte @yt ' s Antwort, die wurde später Hinzugefügt, ist aber deutlich besser).
Könnten Sie gehen mit
numpy.corrcoef()
das ist im Grunde das gleiche wiecorr
im pandas, aber die syntax kann mehr zugänglich, was Sie wollen.Gedruckt:
Alternativ können Sie auch laden Sie die Ergebnisse in einen dataframe mit den entsprechenden Etiketten:
Die wie folgt aussieht: