假设我有一个虚构的熊猫数据帧df
。
假设它有三列:gender
、height
和weight
是否有内置或有效的方法来获取每个gender
的height
和weight
的相关性?
到目前为止我做了什么:
- 手动过滤每个性别的数据框,然后对每个性别运行
相关性。 - 这在我的样本集上有效,但在生产集中会分崩离析,因为我有更多的类别而不仅仅是
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()
最后一部分(rename
和to_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