【发布时间】:2020-05-27 06:04:58
【问题描述】:
这是this question的扩展:
我有一个 Pandas 数据框,例如:
dfq = pd.DataFrame({'COL1': ['USER1', 'USER1','USER2','USER2','USER2','USER3'],
'COL2' : ['MONTH1','MONTH2','MONTH1','MONTH1','MONTH2','MONTH1']
})
一般来说,这意味着每次客户使用服务时,都会在表中添加一条记录,其中包含用户 ID 和月份。我需要知道客户每月平均使用该服务的次数。
我可以像这样计算月份的出现次数:
dfq.groupby('COL2').count()
但是,我如何从那里获得平均值?或者有更好的方法吗?
我想要的输出是这样的:
如果我计算组数(月),然后除以记录总数,我可以得到一个原始平均值:
testcount = dfq.groupby('COL2').count()
len(dfq)
testcount/len(dfq)*100
哪种方式给了我答案,但我发现这是一个非常原始的过程。平均值不可信,我希望能够获得更多统计信息:例如中位数和偏差。
换句话说,我想要他们所做的here,但在他们的情况下,他们计算的是数值,而我的值是字符串。我需要了解以下信息:客户每月使用该服务的中位数是多少。
我希望这很清楚。
谢谢!
【问题讨论】:
-
您是在计算每个用户还是每个月的平均值?
-
嗨@MattR,我正在计算每月的平均值
-
我对你的问题有点困惑,在这个例子中 3 是理想的输出吗?如果不能,您可以编辑并提供您想要的输出吗?
-
@Sebastian,我刚刚添加了更多信息。我希望这能让它更清楚。
-
df.groupby(['COL2'], as_index=False).count().describe() 这是否接近您想要的解决方案?我仍然不确定你需要什么,因为你写的是平均值,然后你计算分布。