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

Python使用Pandas按年重采样DataFrame温度数据绘图异常问题

Pandas按年重采样温度数据报错修复方案

核心报错原因

按年重采样触发异常90%以上是两个问题:

  • 存储日期的dt列没有转换为Pandas支持的datetime64类型,导入csv等格式数据时日期列默认会被识别为字符串类型
  • 调用resample时没有将时间列设为DataFrame索引,也没有在方法中指定时间列参数

可直接运行的修复代码

import pandas as pd
import matplotlib.pyplot as plt

# --- 数据预处理部分(替换成你自己的数据读取逻辑即可)---
# 假设原始数据读取后存储为df
# 1. 强制转换dt列为日期格式,异常日期会被标记为空值
df['dt'] = pd.to_datetime(df['dt'], errors='coerce')
# 2. 两种重采样前置方案二选一即可
# 方案A:把dt列设为索引(后续操作更方便,推荐)
df_timeindex = df.set_index('dt')
# 方案B:不修改索引,后续resample时指定on参数
# --- 重采样计算年平均温度 ---
# 用方案A的话直接按索引重采样,注意pandas2.0+年频率用YE(年末)/YS(年初),旧版本用Y
yearly_avg_temp = df_timeindex['AverageTemperature'].resample('YE').mean()
# 用方案B的话用这行代码
# yearly_avg_temp = df.resample('YE', on='dt')['AverageTemperature'].mean()

# --- 可视化绘图 ---
plt.figure(figsize=(12, 6))
yearly_avg_temp.plot(linewidth=2, color='#d62728')
plt.title('目标城市年平均温度变化趋势', fontsize=14)
plt.xlabel('年份', fontsize=12)
plt.ylabel('年平均温度(℃)', fontsize=12)
plt.grid(alpha=0.3)
plt.show()

避坑提示

  1. 预处理完可以先执行print(df['dt'].dtype)做校验,输出结果为datetime64[ns]才代表日期格式转换成功
  2. 如果你的pandas版本低于2.0,运行时提示频率别名无效,把代码里的'YE'替换成'Y'即可
  3. 如果重采样结果里出现空值,可以在.mean()后面加.dropna()过滤掉无数据的年份

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:51:32