用matplotlib.pyplot.plot()画销量时间序列需先清洗数据:日期列须转为datetime并设为索引,用resample("d").sum().fillna(0)按天聚合补全空日期,绘图时旋转x轴标签并限制刻度数量。

直接用 matplotlib.pyplot.plot() 画销量时间序列是最简路径,但跳过数据清洗和日期对齐,图会完全失真——比如销量突降可能只是某天数据缺失,而非真实下滑。
读取数据时必须处理日期列的类型和索引
电商平台导出的 CSV 常把日期存为字符串(如 "2024-03-15"),不转成 datetime 就排序错乱;不设为索引,plot() 会默认用行号当横轴,趋势线就平了。
- 用
pd.read_csv(..., parse_dates=["date"], index_col="date")一步到位 - 若日期列名不是标准命名(如叫
"order_time"或"sold_at"),务必显式传入,别依赖自动识别 - 检查
df.index.dtype是否为datetime64[ns],不是就用df.index = pd.to_datetime(df.index)强转
按天聚合销量前先重采样,别直接 groupby().sum()
原始订单数据常含秒级时间戳,直接 groupby(df.index.date).sum() 看似可行,但会丢失无订单的“空日期”,导致折线图断开或斜率失真。
- 用
df["sales"].resample("D").sum().fillna(0)——resample自动补全日期范围,fillna(0)把空天填成 0 而非NaN - 若需排除节假日或只看工作日,改用
"B"(business day)频率,但得确认数据本身覆盖全周期 - 警惕
resample默认左闭右开区间:"2024-03-01"的值实际归属2024-03-01 00:00:00到2024-03-02 00:00:00区间
绘图时用 plt.xticks(rotation=30) 防止日期标签重叠
横轴塞几十个日期字符串,默认水平排列会糊成黑条,且 Matplotlib 不会自动缩放字体或错位——它就堆在那儿。
- 加
plt.xticks(rotation=30, ha="right"),ha="right"让文字右对齐,避免末尾被裁切 - 如果日期跨度大(如半年),改用
plt.gca().xaxis.set_major_locator(plt.MaxNLocator(10))限制最多显示 10 个刻度 - 别依赖
fig.autofmt_xdate(),它只对datetime索引生效,且常和手动设置冲突
真正卡住人的往往不是画图函数本身,而是原始数据里混着未发货订单、退款单没扣减、多 SKU 合并统计时漏了规格字段——图再好看,y 轴数字没业务含义,就是废线。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











