You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DataFrame.plot()快速绘图并设置正确日期格式?

解决pandas df.plot日期轴显示1970的问题

问题根源

你当前的Date列只是字符串类型,且未设为DataFrame的索引,df.plot()默认用行号(整数索引)作为X轴,matplotlib会把这些整数解析成1970-01-01以来的天数,所以出现错误的起始日期。

核心解决思路

把Date列转为datetime类型并设为索引,让df.plot()直接用日期索引绘图,同时配置日期格式化器,既保留批量绘图的速度,又修复日期显示问题。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates  # 补上缺失的日期格式化模块

# 读取数据时直接处理日期列
df_file = r"C:\Codes\df_file.csv"
# parse_dates将Date列转为datetime类型,index_col设为DataFrame索引
df = pd.read_csv(df_file, parse_dates=["Date"], index_col=["Date"])

fig = plt.figure(figsize=(12.0, 8.0))
# 指定ax参数,确保绘图在当前创建的画布轴上
df.plot(marker='.', linestyle='none', ax=plt.gca())

plt.title("data_frame_show date", fontsize=16)
# 配置日期显示格式
date_format = mdates.DateFormatter('%y%m')
plt.gca().xaxis.set_major_formatter(date_format)
# 自动旋转X轴标签,避免重叠(可选)
plt.gcf().autofmt_xdate()

plt.legend(loc=(1.04, 0))
plt.show()

关键细节说明

  1. 读取数据时用parse_dates和index_col一步到位,比后续手动转换更高效,同时让df.plot()直接识别日期索引作为X轴。
  2. 指定ax=plt.gca()可以避免pandas自动创建新的子图,确保绘图在你预先定义的画布上。
  3. autofmt_xdate()是可选优化,解决日期标签过多时的重叠问题。

内容的提问来源于stack exchange,提问作者XYZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:36:32