python - Pandas 按销售项目分组并统计列中每月的销售额

标签 python pandas dataframe group-by

嗨,我有一个 pandas 数据框,大致如下所示:

<表类=“s-表”> <标题> 日期 项目 销售额 <正文> 2022年1月1日 iPhone $20 2022年2月1日 iPhone $40 2022年1月2日 iPhone $40 2022年2月2日 MacBook $20 2022年2月3日 MacBook $40 2022年2月4日 MacBook $50

我正在尝试以如下格式获取每月每个项目的计数:

<表类=“s-表”> <标题> 项目 一月 二月 <正文> iPhone 2 1 MacBook 0 3

最后我想要一列取每列的平均值。所以最终的数据框看起来像:

<表类=“s-表”> <标题> 项目 一月 二月 平均 <正文> iPhone 2 1 1,5 MacBook 0 3 1,5

我尝试了很多 pandas groupby 功能,但似乎无法完成。有人可以帮助我吗?

我尝试使用 pd.Grouper(freq='M') 但效果不太好。月份不会显示为列,而是显示为每个销售项目的行。有什么想法吗?

最佳答案

使用交叉表:

(pd.crosstab(df['Item'], pd.to_datetime(df['Date'], dayfirst=True).dt.strftime('%B'))
   .assign(Average=lambda d: d.mean(axis=1))
)

输出:

Date     February  January  Average
Item                               
iphone          1        2      1.5
macbook         3        0      1.5

排序月份名称的替代方法:

from calendar import month_name

(pd.crosstab(df['Item'], pd.to_datetime(df['Date'], dayfirst=True).dt.month)
   .rename(columns=dict(enumerate(month_name)))
   .assign(Average=lambda d: d.mean(axis=1))
)

输出:

Date     January  February  Average
Item                               
iphone         2         1      1.5
macbook        0         3      1.5

关于python - Pandas 按销售项目分组并统计列中每月的销售额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74375323/

相关文章:

python - 如何将图片作为值添加到 Tkinter Treeview 中?

python - 嵌套字段序列化程序 - 数据丢失

python - 取消裸奔累积计数

python - 在 SciKit 线性回归上获取 'ValueError: shapes not aligned'

python - pandas describe函数的统计意义是什么,如何使用?

python - 使用 ItemLoader 跨多个响应加载项目字段

Python 通过不同路径导入相同对象 - 类属性和基元之间的不同行为

python - 如何通过匹配另一个数据帧 pandas 中的值来填充数据帧中的列的值

python - 错误 'AttributeError: ' DataFrameGroupBy'对象没有属性'而数据帧上的 groupby 功能

python - 将格式化为 csv 文件的单个字符串转换为 pandas 数据框