Pandas 多条件相关函数

Pandas correlation function with multiple conditions

Pandas .corr() 函数可以让我获得特征之间的相关系数。当我有多个条件需要满足时,我正在寻找一种计算相关系数的有效方法。

在我的例子中,我有一个数据框,其中每一行对应一个用栅栏隔离的特定区域。数据框中的列是区域范围和围栏 materials(下面的简化示例)。我想计算区域和每个 material 的相关矩阵,只要它的值不为零。例如,

df = pd.DataFrame({'Area': [0.5, 4, 2, 1], 'Wire_rows': [3, 9, 5, 0], 'Columns': [4, 16, 0, 5]})

然后 df.corr().loc['Area', :] 给出了面积与 'Wire_rows' 和 'Columns' 之间的相关性。如果我想让这个计算不包括 materials 的零值,我必须写一些东西,比如

df[df['Wire_rows'] > 0].corr().loc['Area', 'Wire_rows'] 

df[df['Columns'] > 0].corr().loc['Area', 'Columns']

获得相关矩阵需要合并这些单独的部分。

在我的真实示例中有超过 15 material 列和几行,所以我想知道是否有更好的方法从单个计算中排除零值。

这有帮助吗?

cols=['Wire_rows','Columns']
d={}
for col in cols:
    d[col]={0:np.nan}
df.replace(d).corr().loc['Area']