繁体   English   中英

pandas.DataFrame corrwith()方法

[英]pandas.DataFrame corrwith() method

我最近开始和pandas一起工作。 任何人都可以用SeriesDataFrame解释函数.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'])

您希望'cost''amount'列与每个组合中的所有其他列相关联。

focus_cols = ['cost', 'amount']
frame.corr().filter(focus_cols).drop(focus_cols)

在此输入图像描述

回答你的问题:

计算两个DataFrame对象的行或列之间的成对关联。

参数:

其他 :DataFrame

轴:{0或'索引',1或'列'},

默认0 0或'index'用于计算逐列,1或'列'用于逐行删除:boolean,default False从结果中删除缺少的索引,默认返回所有的union返回:correls:Series

corrwith的行为同样addsubmuldiv ,它希望找到一个DataFrame或一个Series中传递other尽管文件称只是DataFrame

otherSeries它播放该系列并沿轴指定的axis匹配,默认为0.这就是以下工作的原因:

frame.drop(labels='a', axis=1).corrwith(frame.a)

b   -1.0
c    0.0
dtype: float64

otherDataFrame ,它将匹配轴指定的axis并关联由另一个轴标识的每个对。 如果我们这样做:

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规则播放,其中的列必须与其相关的列匹配。 但是你显式删除a从第一帧,然后用相关DataFrame身上只穿了a 结果是每列的NaN

corrwith定义为DataFrame.corrwith(other, axis=0, drop=False) ,因此每个默认axis=0 - 即Compute pairwise correlation between columns of two **DataFrame** objects

因此,两个DF中的列名称/标签必须相同:

In [134]: frame.drop(labels='a', axis=1).corrwith(frame[['a']].rename(columns={'a':'b'}))
Out[134]:
b   -1.0
c    NaN
dtype: float64

NaN - 表示(在这种情况下)没有可比较/关联的内容,因为在other DF中没有名为c

如果你传递一个系列作为other系列,它将被翻译(从链接 ,你已在评论中发布)到:

In [142]: frame.drop(labels='a', axis=1).apply(frame.a.corr)
Out[142]:
b   -1.0
c    0.0
dtype: float64

在此输入图像描述

一个简单的输出

对不起有点迟了..没有办法对付系列,而熊猫数据帧只能用相同的columnz进行分析

喜欢

x = np.array([2,4,6,8.2])。reshape(-1,1)

y = np.array([2.3,3.11,.5,7,10,11,12])。重塑(-1,1)

a = pd.DataFrame(x,columns = ['aa'])b = pd.DataFrame(y,columns = ['aa'])

a.corrwith(b)中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM