假设我有一个虚构的熊猫数据框df
。
假设它具有三列:gender
,height
和weight
是否存在一种内置或有效的方法来获取每个height
的{{1}}和weight
的相关性?
到目前为止我所做的:
gender
多,因此在生产样本集中会分散。我有数百名。我的次优代码示例:
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'])
答案 0 :(得分:1)
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