pandas如何自定义设置索引 同时按月份分组数据用于绘制销量统计图
操作实现方案
1. 替换数据框为自定义索引
你可以直接使用pandas的set_index方法完成索引替换:
# 自定义索引序列custom_index长度需要和df行数一致,drop参数设为False可以保留原索引列 df = df.set_index(custom_index, drop=False)
注意:自定义索引的长度需要和数据框的行数完全匹配,否则会触发赋值错误。
2. 按月份分组统计销量
根据你的需求分两种场景处理:
场景1:按自然月1-12月维度分组(所有年份的同月份合并统计)
# 先确保日期列是datetime格式 df['Release Date'] = pd.to_datetime(df['Release Date']) # 提取月份属性 df['month'] = df['Release Date'].dt.month # 按月份分组统计销量总和,将sales替换为你实际的销量列名 month_sales = df.groupby('month')['sales'].sum().reset_index()
场景2:按年+月维度分组(例如2023年1月、2023年2月分别统计)
你之前写的代码可以直接调整使用:
per = df['Release Date'].dt.to_period("M") # 按年-月分组统计销量,将sales替换为你实际的销量列名 month_sales = df.groupby(per)['sales'].sum().reset_index() # 如需绘图更方便,可将period格式转为字符串 month_sales['Release Date'] = month_sales['Release Date'].astype(str)
3. 绘制月份-销量统计图
以柱状图为例,调用matplotlib实现绘制:
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题 plt.figure(figsize=(10, 6)) # 如果是1-12月维度绘图用这行 plt.bar(month_sales['month'], month_sales['sales']) # 如果是年+月维度绘图替换为下一行 # plt.bar(month_sales['Release Date'], month_sales['sales']) plt.xlabel('月份') plt.ylabel('总销量') plt.title('各月份销量统计') # 1-12月维度可加这行固定刻度 plt.xticks(range(1, 13)) plt.show()
内容的提问来源于stack exchange,提问作者Bradley Kakuyu
相关产品推荐
相关产品推荐

