python之Pandas Groupby 计数

hnrainll 阅读:17 2024-10-01 17:34:08 评论:0

我有一个数据框如下(tail 10):

> store_id  period_id   sales_volume    t   unique_period   q4 
> 809838    38126884    242 1.3485     1.0   211447000      1 
> 643854    38126899    240 2.9500    777.0  211448500      1 
> 227299    38126899    242 6.2000    777.0  211450000      1 
> 731859    38126908    240 2.2000    777.0  211451500      1 
> 687269    38126908    241 2.6000     1.0   211451500      1 
> 512944    38126926    241 3.9500    777.0  211453000      1 
> 832513    38126935    240 0.9500    777.0  211454500      1 
> 417892    38126935    242 4.6500    777.0  211456000      1 
> 354468    38126938    241 5.1000    777.0  211457500      1 
> 604276    38126938    242 3.2765     1.0   211457500      1 

我创建了一个 groupby 对象:

mc[['store_id', 'unique_period']].groupby(['store_id','unique_period']).count() 

结果是:

store_id    unique_period 
4168621     1000 
            2500 
            4000 
            5500 
            7000 
            8500 
4168624     10000 
4168636     11500 
            13000 
            14500 

但我需要计算每个组中的“唯一期间”,例如:

组 4168621 - 6 条记录, 群组 4168624 - 1 条记录 等等。

之后需要计算该系列的 MEDIAN。

我卡住了。由于 GROUPBY 没有值只有 GroupBY 索引。

请您参考如下方法:

使用DataFrameGroupBy.nunique使用中位数:

a = mc.groupby('store_id')['unique_period'].nunique() 
print (a) 
store_id 
38126884    1 
38126899    2 
38126908    1 
38126926    1 
38126935    2 
38126938    1 
Name: unique_period, dtype: int64 
 
a = mc.groupby('store_id')['unique_period'].nunique().median() 
print (a) 
1.0 

编辑:

如果需要计算唯一值和中位数:

a = mc.groupby('store_id')['unique_period'].agg(['nunique','median']) 
print (a) 
          nunique     median 
store_id                     
38126884        1  211447000 
38126899        2  211449250 
38126908        1  211451500 
38126926        1  211453000 
38126935        2  211455250 
38126938        1  211457500 


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号