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