gpt4 book ai didi

python - 如何在 pandas 数据框中成对计算相关性

转载 作者:行者123 更新时间:2023-12-01 06:34:56 25 4
gpt4 key购买 nike

我从 .csv 文件加载了此数据集。

假设数据框 df 看起来像这样(本文变得更简单):

Run_num  trial_name  unit_1_act  unit_2_act  unit_3_act  unit_4_act     
0 trial1 0.0 0.000000 0.272244 0.006428
0 trial2 0.0 0.000000 0.898450 0.000729
0 trial3 0.0 0.893845 0.000000 0.000000
0 trial4 0.0 0.879367 0.000000 0.006312
1 trial1 0.0 0.000000 0.324059 0.013421
1 trial2 0.0 0.000000 0.284394 0.004305
1 trial3 0.0 0.492053 0.000000 0.000504
1 trial4 0.0 0.540394 0.000000 0.000000
2 trial1 0.0 0.000000 0.430504 0.105394
2 trial2 0.0 0.000000 0.549384 0.004934
2 trial3 0.0 0.879367 0.000000 0.000312
2 trial4 0.0 0.394034 0.000123 0.000000

因此,对于每个“run_num”,有四种试验类型(即试验1、试验2、试验3、试验4),并且每种试验类型都有一系列单位的激活值,即unit_1_act、unit_2_act等。

我对试验类型之间单位事件的相关性感兴趣。我想获取试验 1、试验 2、试验 3 和试验 4 之间单元事件的所有成对相关性,分别针对每个运行编号。例如,我想获取试验1运行0的unit_1_act到unit_4_act中的值序列,并将其与在同一运行中的所有其他试验的unit_1_act到unit_4_act相关联。最终我会取交叉运行的平均值,这样我就可以看到试验 1 与试验 2、试验 1 与试验 3 等的总体相关矩阵。

我对此有点困惑。首先,df.corr() 函数适用于列,而我想要运行相关性的数据位于每行内(即 unit_*_act)。我可能会 reshape 数据框,以便单元事件位于列内,但我认为这不起作用,因为我只需要查看特定运行中的相关性?考虑到我最终想要获得运行中的平均值、标准差等,所有这些相关性的输出的最佳形式是什么?

谢谢!

最佳答案

您可以首先 reshape 数据框,使每个试验成为一个列 set_index , stackunstack .

print (df.set_index(['Run_num', 'trial_name']).stack().unstack(level='trial_name'))
trial_name trial1 trial2 trial3 trial4
Run_num
0 unit_1_act 0.000000 0.000000 0.000000 0.000000
unit_2_act 0.000000 0.000000 0.893845 0.879367
unit_3_act 0.272244 0.898450 0.000000 0.000000
unit_4_act 0.006428 0.000729 0.000000 0.006312
1 unit_1_act 0.000000 0.000000 0.000000 0.000000
unit_2_act 0.000000 0.000000 0.492053 0.540394
unit_3_act 0.324059 0.284394 0.000000 0.000000
unit_4_act 0.013421 0.004305 0.000504 0.000000
2 unit_1_act 0.000000 0.000000 0.000000 0.000000
unit_2_act 0.000000 0.000000 0.879367 0.394034
unit_3_act 0.430504 0.549384 0.000000 0.000123
unit_4_act 0.105394 0.004934 0.000312 0.000000

然后使用groupby来执行corr每 run_num。

df_corr = df.set_index(['Run_num', 'trial_name']).stack().unstack(level='trial_name')\
.groupby(level='Run_num').corr()
print (df_corr)
trial_name trial1 trial2 trial3 trial4
Run_num trial_name
0 trial1 1.000000 0.999765 -0.343824 -0.346886
trial2 0.999765 1.000000 -0.333694 -0.336880
trial3 -0.343824 -0.333694 1.000000 0.999977
trial4 -0.346886 -0.336880 0.999977 1.000000
1 trial1 1.000000 0.999682 -0.352145 -0.351722
trial2 0.999682 1.000000 -0.340504 -0.340060
trial3 -0.352145 -0.340504 1.000000 1.000000
trial4 -0.351722 -0.340060 1.000000 1.000000
2 trial1 1.000000 0.971875 -0.438267 -0.437924
trial2 0.971875 1.000000 -0.337480 -0.337048
trial3 -0.438267 -0.337480 1.000000 1.000000
trial4 -0.437924 -0.337048 1.000000 1.000000

关于python - 如何在 pandas 数据框中成对计算相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com