Pandas提供兩種不同的相關函數的原因是什麼?Pandas corr()vs corrwith()
DataFrame.corrwith(其他,軸= 0,降=假):2數據幀objectsCompute成對
與
數據幀的行或列之間的相關性 .corr(method ='pearson',min_periods = 1):計算成對 列的相關性,不包括NA /空值
(從熊貓0.20.3文檔)
Pandas提供兩種不同的相關函數的原因是什麼?Pandas corr()vs corrwith()
DataFrame.corrwith(其他,軸= 0,降=假):2數據幀objectsCompute成對
與
數據幀的行或列之間的相關性 .corr(method ='pearson',min_periods = 1):計算成對 列的相關性,不包括NA /空值
(從熊貓0.20.3文檔)
第一個計算與另一個數據幀的相關性:
2數據幀的行或列之間的對象
第二個單位計算它本身
計算列
的對相關
基本答案:
這裏有一個例子可能更清楚:
np.random.seed(123)
df1=pd.DataFrame(np.random.randn(3,2), columns=list('ab'))
df2=pd.DataFrame(np.random.randn(3,2), columns=list('ac'))
正如@ffeast指出,使用corr
比較內的數值列相同的數據幀。非數字列將被自動跳過。
df1.corr()
a b
a 1.000000 -0.840475
b -0.840475 1.000000
您可以corrwith
比較DF1 & DF2列。需要注意的是與同名僅列進行比較:
df1.corrwith(df2)
a 0.993085
b NaN
c NaN
附加選項:
如果你想熊貓忽略列名,只是DF1的第一行比較的第一行DF2的,那麼你可以重新命名DF2的列匹配DF1的列是這樣的:
df1.corrwith(df2.set_axis(df1.columns, axis='columns', inplace=False))
a 0.993085
b 0.969220
注意DF1和DF2需要具有相同的列數在這種情況下。
最後,廚房水槽方法:您也可以簡單地水平連接兩個數據集,然後使用corr()
。其優點是,這主要作品無論列數以及它們是如何命名的,但缺點是,你可能會得到比你想要更多的輸出或需要:
pd.concat([df1,df2],axis=1).corr()
a b a c
a 1.000000 -0.840475 0.993085 -0.681203
b -0.840475 1.000000 -0.771050 0.969220
a 0.993085 -0.771050 1.000000 -0.590545
c -0.681203 0.969220 -0.590545 1.000000
唉唉!你最後的提示「同名」是非常有用的。這是我感到困惑的地方,因爲我不知道哪個列是相關的邏輯。 –
@BaluJr。是的,我故意做了這個B/C通常人們會認爲熊貓會根據位置(包括我;-)來對齊列,但大熊貓通常會按標籤做事。 – JohnE