【发布时间】:2020-03-04 13:19:09
【问题描述】:
我想计算和测试 pandas 中两组不同的多列的平均值,我可以计算出计算部分,但测试部分到目前为止还没有好的解决方案。下面是一个玩具样品和我想要的结果。
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检验,即之前 groupby?
-
A
groupby.agg在这里不会很好,因为它将 DataFrame 划分为单独的组,然后对每个组进行计算。两个样本 t 检验要求您将多个组发送到函数中,尽管我猜groupby至少会为您分隔每个组。
标签: python pandas pandas-groupby