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

Pandas DataFrame时间轴刻度异常:年份显示为1138而非2017

问题分析与解决方案

看起来你遇到的X轴日期异常和格式不生效的问题,主要有两个核心原因:

1. Pandas Plot未关联自定义Axes对象

你先创建了fig, ax = plt.subplots(),但调用Daten['...'].plot()时没有指定ax=ax参数——这会让Pandas自动创建一个新的Axes实例,你后续对ax的X轴格式设置完全没作用在实际绘图的轴上,这也是日期显示混乱的关键原因。

2. 日期切片格式存在歧义

你用'6/1/2017':'06/30/2017'进行切片,虽然读取数据时设置了dayfirst=True,但这种混合格式(部分带前导零,部分不带)可能引发解析歧义,建议使用标准的ISO日期格式'2017-06-01':'2017-06-30'更稳妥。


修正后的完整代码

%pylab inline
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates

# 读取数据,保持参数正确
Gesamt_Apr_Sept_2017 = pd.read_csv(
    'Gesamtstromverbrauch_Met_01.04.2017-30.09.2017-1h.csv',
    sep=';',
    decimal=",",
    thousands='.',
    index_col=0,
    parse_dates=True,
    dayfirst=True
)

# 使用ISO格式切片,避免歧义
Daten = Gesamt_Apr_Sept_2017['2017-06-01':'2017-06-30']

# 创建图表并关联Axes
fig, ax = plt.subplots(figsize=(15,6))
# 关键:添加ax=ax,让Pandas使用我们定义的Axes
Daten['LKHF-Strom-Met - Gesamt (kWh)'].plot(ax=ax)

# 设置X轴刻度与格式
ax.xaxis.set_major_locator(mdates.DayLocator(interval=7))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%a %d.%m.%Y'))

# 旋转刻度标签
for tick in ax.get_xticklabels():
    tick.set_rotation(90)

# 可选:添加图表标题和轴标签,提升可读性
ax.set_title('Stromverbrauch Juni 2017')
ax.set_ylabel('Verbrauch (kWh)')
plt.tight_layout()  # 自动调整布局,避免标签被截断
plt.show()

额外验证步骤

在运行绘图代码前,可以先确认你的DataFrame索引确实是正确的datetime类型:

print(Daten.index.dtype)  # 应该输出 datetime64[ns]
print(Daten.index[:5])    # 查看前5条索引,确认是2017年6月的日期

这样修改后,X轴应该会正确显示Thu 01.06.2017这类格式的日期,且不会出现1138年的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:47:18