如何用pandas处理csv销售数据:合并同类列并统计最高销售额时段
具体实现代码
第一步:导入库并读取原始数据
import pandas as pd # 读取csv时直接把时间列解析为datetime格式,方便后续时间处理 df = pd.read_csv("你的销售数据文件路径.csv", parse_dates=["Date+time:"])
第二步:合并同前缀品类列
我们通过提取列名首个空格前的内容作为品类分组依据,对同组列求和完成合并:
# 构造列名到品类的映射,第一列为时间列跳过 col_to_category = {} for col in df.columns[1:]: base_cate = col.split(" ")[0] col_to_category[col] = base_cate # 按品类分组对列求和,得到合并后的品类销售数据 cate_df = df.groupby(col_to_category, axis=1).sum() # 把时间列加回合并后的数据表 cate_df.insert(0, "datetime", df["Date+time:"])
第三步:统计每天销售额最高的小时时段
# 提取日期、小时维度 cate_df["date"] = cate_df["datetime"].dt.date cate_df["hour"] = cate_df["datetime"].dt.hour # 先计算每个日期+小时的总销售额 hourly_total = cate_df.groupby(["date", "hour"])[["shirt", "shorts", "accessories"]].sum().sum(axis=1).reset_index(name="total") # 筛选出每天销售额最高的小时,若有多个小时销售额并列最高会全部保留 daily_top_hour = hourly_total.loc[hourly_total.groupby("date")["total"].idxmax()] # 输出daily_top_hour即可查看全年每天的最高销售额时段
第四步:计算最高时段各品类的销售额占比
# 构造日期+小时的复合键,筛选所有属于最高时段的销售明细 top_hour_keys = list(zip(daily_top_hour["date"], daily_top_hour["hour"])) cate_df["date_hour"] = list(zip(cate_df["date"], cate_df["hour"])) top_data = cate_df[cate_df["date_hour"].isin(top_hour_keys)] # 汇总所有最高时段各品类的总销售额,计算占比 cate_total = top_data[["shirt", "shorts", "accessories"]].sum() cate_ratio = (cate_total / cate_total.sum()).round(4) * 100 # 输出cate_ratio即可得到各品类的销售额占比(单位为%)
补充说明
- 若同一天存在多个销售额并列最高的小时,上述代码会将所有并列时段都纳入统计,如果只需保留第一个出现的最高时段,可将
idxmax()替换为nlargest(1, keep="first") - 占比的小数保留位数可自行修改
round()的参数调整
内容的提问来源于stack exchange,提问作者Tamara635
相关产品推荐
相关产品推荐

