python corrwith_python – pandas.DataFrame corrwith()方法
我最近開始和熊貓一起工作.任何人都可以用Series和DataFrame來解釋函數.corrwith()的行為差異嗎?
假設我有一個DataFrame:
frame = pd.DataFrame(data={'a':[1,2,3], 'b':[-1,-2,-3], 'c':[10, -10, 10]})
我想要計算特征’a’和所有其他特征之間的相關性.
我可以通過以下方式完成:
frame.drop(labels='a', axis=1).corrwith(frame['a'])
結果將是:
b -1.0
c 0.0
但非常相似的代碼:
frame.drop(labels='a', axis=1).corrwith(frame[['a']])
生成絕對不同且不可接受的表格:
a NaN
b NaN
c NaN
所以,我的問題是:為什么在DataFrame作為第二個參數的情況下,我們得到如此奇怪的輸出?
解決方法:
我認為你在尋找什么:
假設您的框架是:
frame = pd.DataFrame(np.random.rand(10, 6), columns=['cost', 'amount', 'day', 'month', 'is_sale', 'hour'])
您希望“費用”和“金額”列與每個組合中的所有其他列相關聯.
focus_cols = ['cost', 'amount']
frame.corr().filter(focus_cols).drop(focus_cols)
回答你的問題:
Compute pairwise
correlation between rows or columns of two DataFrame objects.
Parameters:
other : DataFrame
axis : {0 or ‘index’, 1 or ‘columns’},
default 0 0 or ‘index’ to compute column-wise, 1 or ‘columns’ for row-wise drop : boolean, default False Drop missing indices from
result, default returns union of all Returns: correls : Series
corrwith的行為類似于add,sub,mul,div,因為它希望找到一個DataFrame或一個正在傳遞的系列,盡管文檔只說DataFrame.
當其他是系列時,它播放該系列并沿軸指定的軸匹配,默認為0.這就是以下工作的原因:
frame.drop(labels='a', axis=1).corrwith(frame.a)
b -1.0
c 0.0
dtype: float64
當other是DataFrame時,它將匹配軸指定的軸并關聯由另一個軸標識的每個對.如果我們這樣做:
frame.drop('a', axis=1).corrwith(frame.drop('b', axis=1))
a NaN
b NaN
c 1.0
dtype: float64
只有c是共同的,只有c計算了它的相關性.
在您指定的情況下:
frame.drop(labels='a', axis=1).corrwith(frame[['a']])
frame [[‘a’]]是一個DataFrame,因為[[‘a’]]并且現在由DataFrame規則播放,其中的列必須與其相關的列匹配.但是你明確地從第一幀中刪除了一個然后與一個只有一個的數據幀相關聯.結果是每列的NaN.
標簽:python,pandas,dataframe
來源: https://codeday.me/bug/20191008/1870198.html
總結
以上是生活随笔為你收集整理的python corrwith_python – pandas.DataFrame corrwith()方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 段永平到底有多少钱 看看他的商界历程就知
- 下一篇: 后端调用python_【后端开发】pyt