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

DataFrame绘图异常:2020年曲线错误及双年份合并绘图问题

问题解答

1. 2020年曲线显示异常的常见原因

  • 日期处理问题:2020是闰年,若date列仅存储月日(如02-29),但解析时按非闰年逻辑处理,会导致日期错位或缺失;或是date列格式不统一(混合字符串与datetime对象),绘图时数据顺序混乱,曲线扭曲。
  • 数据质量问题:2020年的power列存在大量空值、0值或极端异常值,导致曲线出现断崖、跳跃等异常形态。
  • 轴范围自动适配问题:2020年数据的功率范围与2019年差异较大,绘图时自动调整的轴范围会压缩正常趋势,使曲线看起来异常。
  • 未排序日期:绘图前未对2020年的date列排序,曲线按原始行顺序绘制,呈现乱序状态。

2. 合并两年曲线到同一图表的实现方法

以下以matplotlib和seaborn为例,给出具体实现步骤:

方法一:手动筛选分组绘制

import pandas as pd
import matplotlib.pyplot as plt

# 筛选并排序两年数据
df_2019 = df[df['year'] == 2019].sort_values('date')
df_2020 = df[df['year'] == 2020].sort_values('date')

# 统一日期轴为月日格式(忽略年份,确保对齐)
df_2019['month_day'] = pd.to_datetime(df_2019['date'].dt.strftime('%m-%d'), format='%m-%d')
df_2020['month_day'] = pd.to_datetime(df_2020['date'].dt.strftime('%m-%d'), format='%m-%d')

# 绘制双曲
plt.figure(figsize=(12,6))
plt.plot(df_2019['month_day'], df_2019['power'], label='2019年')
plt.plot(df_2020['month_day'], df_2020['power'], label='2020年')
plt.xlabel('日期(月-日)')
plt.ylabel('功率')
plt.title('2019-2020年每日功率趋势')
plt.legend()
plt.xticks(rotation=45)
plt.show()

方法二:用seaborn的hue参数分组绘制

import seaborn as sns

# 统一日期为月日格式
df['month_day'] = pd.to_datetime(df['date'].dt.strftime('%m-%d'), format='%m-%d')

plt.figure(figsize=(12,6))
sns.lineplot(data=df, x='month_day', y='power', hue='year', marker='o', linestyle='-')
plt.xlabel('日期(月-日)')
plt.ylabel('功率')
plt.title('2019-2020年每日功率趋势')
plt.legend(title='年份')
plt.xticks(rotation=45)
plt.show()

3. 是否需要重构DataFrame格式?

不是必须,但重构为「月日日期为索引、年份为列」的格式会让绘图更简洁,也便于后续对比分析。

重构示例:

# 创建月日列并转为datetime格式
df['month_day'] = pd.to_datetime(df['date'].dt.strftime('%m-%d'), format='%m-%d')
# 透视表重构数据结构
pivot_df = df.pivot(index='month_day', columns='year', values='power').sort_index()

重构后仅需一行代码即可绘图:

pivot_df.plot(figsize=(12,6), title='2019-2020年每日功率趋势')
plt.xlabel('日期(月-日)')
plt.ylabel('功率')
plt.xticks(rotation=45)
plt.show()

这种格式的优势是数据结构清晰,便于计算两年功率差值、均值等对比指标,同时绘图代码更简洁。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:20:31