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']
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']