gpt4 book ai didi

python - 在 groupby pandas 之后对多列进行 t 测试

转载 作者:行者123 更新时间:2023-12-04 11:01:55 26 4
gpt4 key购买 nike

我想计算和测试 pandas 中两组不同多列的平均值,我可以计算出计算部分,但测试部分目前还没有好的解决方案。下面是一个玩具 sample 和我想要的结果。

df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=['col_1','col_2'])
df['group'] = ['A']*50 + ['B']*50

df.groupby('group').agg({"col_1":"mean","col_2":"mean"})

col_1 col_2
group
A 52.26 56.58
B 53.04 49.18

我想要的:

       col_1  t_col_1  col_2 t_col_2
group
A 52.26 4.3*** 56.58 0.8
B 53.04 4.3*** 49.18 0.8

其中t_col_1为A组和B组col_1均值差异的t统计,即t.test(df.loc[df ['group'].isin(['B'])][col_1], df.loc[df['group'].isin(['A'])][col_1])。星星不是必需的,但如果它们能在那里就好了。

关于如何做到这一点有什么建议吗?

最佳答案

您可以遍历列并按组执行 t 检验:

import pandas as pd
import scipy.stats as stats

tstats = {}
ix_a = df['group'] == 'A'
for x in df:
if x != 'group':
tstats['t_' + x] = stats.ttest_ind(df[x][ix_a], df[x][~ix_a])[0]

df.groupby('group').mean().assign(**tstats)

结果:

       col_1  col_2  t_col_1   t_col_2
group
A 56.24 46.84 0.85443 -0.281279
B 51.24 48.42 0.85443 -0.281279

关于python - 在 groupby pandas 之后对多列进行 t 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58757557/

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