如何为Pandas的每行子集运行相关性?

2024-09-28 22:33:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

假设它有三列:genderheightweight

是否有一种内置的或有效的方法来获取每个heightweight的相关性gender

到目前为止我所做的:

  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

Tags: 数据方法示例df关系手动gender内置
1条回答
网友
1楼 · 发布于 2024-09-28 22:33:16
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

相关问题 更多 >