Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:计算列上的组计数中值_Python_Pandas_Dataframe - Fatal编程技术网

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。我将尝试一下,并向您汇报。