从分组数据帧获取百分

问题描述 投票:2回答:3

我有2个实验组一个数据帧,我试图让百分位分布。然而,该数据已经分组:

df = pd.DataFrame({'group': ['control', 'control', 'control','treatment','treatment','treatment'],
               'month': [1,4,9,2,5,12],
               'ct': [8,4,2,5,5,7]})

我想计算哪个月是代表25,第50,第75每组百分点,但数据帧是在组/月变量已分组。

更新1:我知道我没有澄清我遇到了麻烦。这是一个数据帧分组,因此控制中,例如,具有8个数据点,其中一个月= 1,4,其中一个月= 4,和2,其中一个月= 9.下列百分比值应为:

x = pd.Series([1,1,1,1,1,1,1,1,4,4,4,4,9,9)]
x.quantile([0.25,0.5,0.75])
>> 0.25    1.0
   0.50    1.0
   0.75    4.0
   dtype: float64

按组分组并采取位数不能提供一个准确的答案。有没有办法爆炸了计数,并采取取消组合值的百分位数?最终目标应该有这些值:

             p25 p50 p75
control      1   1   4
treatment    2   5   12
python pandas dataframe percentile
3个回答
1
投票

您可以使用Series.repeat再拿到位数:

df.groupby('group').apply(lambda x: (x.month.repeat(x.ct)).quantile([0.25, 0.5, 0.75])).rename_axis([None], axis=1)

           0.25  0.50  0.75
group                      
control     1.0   1.0   4.0
treatment   2.0   5.0  12.0

1
投票

您可以尝试使用pd.quanitle与所需的百分比为列表

df.groupby('group').quantile([0.25,0.50,0.75])

日期:

                    ct  month
group           
control     0.25    3.0 2.5
            0.50    4.0 4.0
            0.75    6.0 6.5
treatment   0.25    5.0 3.5
            0.50    5.0 5.0
            0.75    6.0 8.5

0
投票

您可能要检查describe

df.groupby('group').describe().stack()
© www.soinside.com 2019 - 2024. All rights reserved.