我有一群N人,我计算了一些数量的相关矩阵(q1_score,... q5_score)
df.groupby('participant_id').corr()
Out[130]:
q1_score q2_score q3_score q4_score q5_score
participant_id
11.0 q1_score 1.000000 -0.748887 -0.546893 -0.213635 -0.231169
q2_score -0.748887 1.000000 0.639649 0.324976 0.335596
q3_score -0.546893 0.639649 1.000000 0.154539 0.151233
q4_score -0.213635 0.324976 0.154539 1.000000 0.998752
q5_score -0.231169 0.335596 0.151233 0.998752 1.000000
14.0 q1_score 1.000000 -0.668781 -0.124614 -0.352075 -0.244251
q2_score -0.668781 1.000000 -0.175432 0.360183 0.184585
q3_score -0.124614 -0.175432 1.000000 -0.137993 -0.125115
q4_score -0.352075 0.360183 -0.137993 1.000000 0.968564
q5_score -0.244251 0.184585 -0.125115 0.968564 1.000000
17.0 q1_score 1.000000 -0.799223 -0.814424 -0.790587 -0.777318
q2_score -0.799223 1.000000 0.787238 0.658524 0.640786
q3_score -0.814424 0.787238 1.000000 0.702570 0.701440
q4_score -0.790587 0.658524 0.702570 1.000000 0.998996
q5_score -0.777318 0.640786 0.701440 0.998996 1.000000
18.0 q1_score 1.000000 -0.595545 -0.617691 -0.472409 -0.477523
q2_score -0.595545 1.000000 0.386705 0.148761 0.115068
q3_score -0.617691 0.386705 1.000000 0.806637 0.782345
q4_score -0.472409 0.148761 0.806637 1.000000 0.982617
q5_score -0.477523 0.115068 0.782345 0.982617 1.000000
我需要计算所有参与者的相关系数的中值吗?我的意思是:我需要接受考虑。在所有参与者的项目J和项目K之间找到它们的中值。
我确信这是一行代码,但我很难实现(仍然通过示例学习大熊猫)。
答案 0 :(得分:2)
堆叠您的数据,并执行另一个组:
df.groupby('participant_id').corr().stack().groupby(level = [1,2]).median()
编辑:实际上,如果您不想,则不需要堆叠:
df.groupby('participant_id').corr().groupby(level = [1]).median()
也有效。
答案 1 :(得分:2)
IIUC,您希望所有问题的每个参与者的平均均值:
df.where(df != 1).mean(axis=1).mean(level=0)
让我们摆脱与where
相同问题的相关性,然后通过participant_id获取axis=1
方向的所有问题的均值,然后得到participant_id意为level=0
。
输出:
participant_id
11.0 0.086416
14.0 -0.031493
17.0 0.130800
18.0 0.105896
dtype: float64
df.where(df != 1).median(axis=1).median(level=0)