如何在Python中分组相同的值并计算其频率?
-
16-10-2019 - |
题
使用Python进行分析的新手,所以请保持温柔:-)我找不到这个问题的答案 - 道歉是否已经以不同的格式在其他地方回答。
我有一个用于零售商店的交易数据数据集。变量以及解释是:
- 部分:商店的部分,str;
- prod_name:产品的名称,a str;
- 收据:发票的数量,int;
- 收银员,收银员的数量,国际因素;
- 费用:物品的成本,浮标;
- 日期,格式mm/dd/yy,a str;
- 时间,格式HH:mm:ss,a str;
收据具有单一交易中购买的所有产品的相同值,因此可以使用单个交易中的平均购买数量。
最好的方法是什么?我本质上想使用 groupby()
通过其自身相同的事件将收据变量分组,以便我可以创建直方图。
在PANDAS数据框架中使用数据。
编辑:
这是一些带有标头的示例数据(prod_name实际上是十六进制号):
section,prod_name,receipt,cashier,cost,date,time
electronics,b46f23e7,102856,5,70.50,05/20/15,9:08:20
womenswear,74558d0d,102857,8,20.00,05/20/15,9:12:46
womenswear,031f36b7,102857,8,30.00,05/20/15,9:12:47
menswear,1d52cd9d,102858,3,65.00,05/20/15,9:08:20
从此样本集中,我期望收据直方图显示了两次收据102857的出现(因为该人在一笔交易中分别购买了两项)和一个收据102856和收据102858。 100万行。
解决方案
从此样本集中,我期望收据直方图显示了两次收据102857的出现(因为该人以一笔交易购买了两项)和一个收据102856和收据102858的发生。
然后您想要:
df.groupby('receipt')。receipt.count()
receipt
102856 1
102857 2
102858 1
Name: receipt, dtype: int64
其他提示
我正在围绕数据纠缠的一些教程。也许是我的 Jupyter笔记本 在Github上会有所帮助。我认为这是关键正在修改行:
df.groupby('male')['age'].mean()
成为:
df.groupby('reciept')['prod_name'].count()
通过多个变量进行分组,这应该有效:
df.groupby(['reciept','date'])['reciept'].count()