如何为熊猫中的每个行子集运行相关性?



假设我有一个虚构的熊猫数据帧df

假设它有三列:genderheightweight

是否有内置或有效的方法来获取每个genderheightweight的相关性?

到目前为止我做了什么:

  1. 手动过滤每个性别的数据框,然后对每个性别运行
    相关性。
  2. 这在我的样本集上有效,但在生产集中会分崩离析,因为我有更多的类别而不仅仅是gender。我有几百个。

我的次优代码示例:

df_m=df[(df['gender']=='male')]
df_m['height'].corr(df_m['weight'])
df_f=df[(df['gender']=='female')]
df_f['height'].corr(df_f['weight'])

理想输出:

'gender' 'correlation'
'male' .9007876876 
'female' .8777687666
df.groupby('gender').apply(lambda x: x.height.corr(x.weight)).rename('correlation').to_frame()

最后一部分(renameto_frame(只是为了让它达到您想要的输出。

示例

>>> df
gender  height  weight
0    male       1       4
1    male       2       4
2    male       3       5
3  female       1       4
4  female       2       3
5  female       3       5
>>> df.groupby('gender').apply(lambda x: x.height.corr(x.weight)).rename('correlation').to_frame()
correlation
gender             
female     0.500000
male       0.866025

最新更新