Python 熊猫:计算列上的组计数中值
这是以下内容的扩展: 我有一个数据框,例如:Python 熊猫:计算列上的组计数中值,python,pandas,dataframe,Python,Pandas,Dataframe,这是以下内容的扩展: 我有一个数据框,例如: dfq = pd.DataFrame({'COL1': ['USER1', 'USER1','USER2','USER2','USER2','USER3'], 'COL2' : ['MONTH1','MONTH2','MONTH1','MONTH1','MONTH2','MONTH1'] }) 通常,这意味着每次客户使用服务时,都会向表中添加一条记录,其中包含用户ID和月份。我需要知道
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
这给了我答案,但我发现这是一个非常原始的过程。平均值是不可信的,我希望能够得到更多的统计信息:例如,中位数和偏差
换句话说,我想知道他们做了什么,但在他们的例子中,他们是在计算数值,而我的值是字符串。我需要了解如下信息:每月该服务的平均客户使用率是多少
我希望这是清楚的
谢谢大家! 考虑从以下几点开始:
df=dfq.assign(cnt=1).groupby(list(dfq.columns),as_index=False)[“cnt”].sum()
然后,您将为您提到的操作打开机会窗口:
res_mean=df.groupby(“COL2”)[“cnt”]。应用(np.中值)
res_std=df.groupby(“COL2”)[“cnt”]。应用(np.std)
相应地返回:
COL2
月1.0
MONTH2 1.0
名称:cnt,数据类型:float64
可乐
月1 0.471405
月2 0.000000
名称:cnt,数据类型:float64
您是在计算每个用户的平均值还是每个月的平均值?您好@MattR,我正在计算每个月的平均值。您的问题让我有点困惑,在本例中,3是期望的输出吗?如果没有,你能编辑并提供你想要的输出吗?@Sebastian,我只是补充了一些信息。我希望这能让事情变得更清楚。df.groupby(['COL2'],as_index=False)。count()。description()这是否接近您想要的解决方案?我仍然不确定你们需要什么,因为你们写的是平均数,然后计算分布。非常感谢@Grzegorz Skibinski。我将尝试一下,并向您汇报。