2016-08-17 5 views
0

Ich versuche, etwas ganz einfaches zu tun, eine Pearson Korrelationsmatrix mehrerer Variablen zu berechnen, die als Spalten eines DataFrame angegeben werden. Ich will, dass es Nans ignoriert und auch die p-Werte liefert. scipy.stats.pearsonr ist nicht ausreichend, da es nur für zwei Variablen funktioniert und Nans nicht berücksichtigen kann. Es sollte etwas besser als die ...Pearson Mehrfachkorrelation mit Scipy

Zum Beispiel sein,

df = pd.DataFrame([[1,2,3],[6,5,4],[1,None,9]]) 

     0 1 2 
    0 1 2.0 3 
    1 6 5.0 4 
    2 1 NaN 9 

Die Spalten von df sind die Variablen und die Reihen sind Beobachtungen. Ich möchte einen Befehl, der eine 3x3-Korrelationsmatrix zusammen mit einer 3x3-Matrix entsprechender p-Werte zurückgibt. Ich möchte, dass es die None weglässt. Das heißt, die Korrelation zwischen [1,6,1], [2,5, NaN] sollte die Korrelation zwischen [1,6] und [2,5] sein.

Es muss eine schöne Pythonic Art und Weise, das zu tun, kann jemand bitte vorschlagen?

+0

Was die pearson Korrelation zwischen diesen beiden Vektoren ist: [6,5,4] , [1, None, 9]? – cel

+0

Danke @cel. Ich möchte, dass Variablen Spalten und Beobachtungen Zeilen sind. Um Ihre Frage zu beantworten, sollte die Korrelation zwischen [1,6,1], [2,5, NaN] die Korrelation zwischen [1,6] und [2,5] sein. Ich habe auch die Fragen bearbeitet. – splinter

Antwort

1

Wenn Sie Ihre Daten in einem Pandas Datenrahmen haben, können Sie einfach df.corr() verwenden.

Vom docs:

DataFrame.corr(method='pearson', min_periods=1)
Compute paarweise Korrelation von Spalten, mit Ausnahme von NA/Nullwert