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

Python Colab中折线图显示异常问题求助

问题描述

基于日期合并两个CSV文件后,绘制的折线图结果异常(如图所示),已确认数据准备步骤无误,求解决思路。

异常折线图

使用代码如下:

import numpy as np
import pandas as pd

from google.colab import files
data = files.upload()
insitu = files.upload()

from pandas.io import excel
import io
df = pd.read_csv(io.BytesIO(data['lakeEl.csv']))
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace = True)

df2 = pd.read_csv(io.BytesIO(insitu['waterLevel.csv']))
df2['date'] = pd.to_datetime(df2['date'])
df2.set_index('date', inplace = True)


merg = pd.merge(df, df2, how = 'outer', on = 'date')
lake_level = merg.dropna()


import matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(lake_level['area']);
解决思路
  • 强制按日期排序:外连接后的DataFrame日期索引可能乱序,折线图会按行顺序而非时间顺序绘制,绘图前先对数据按索引排序:
    lake_level = lake_level.sort_index()
    
  • 排查数据异常值:打印area列的统计信息和前N行数据,确认是否存在极端值或数据类型错误:
    print(lake_level['area'].describe())
    print(lake_level.head(20))
    
  • 显式指定x轴为日期:当前仅传入y轴数据,matplotlib默认用行号作为x轴,显式指定日期索引为x轴可避免逻辑混乱:
    ax.plot(lake_level.index, lake_level['area'])
    
  • 验证合并数据量:检查合并前后的数据行数变化,确认dropna()是否过滤了过多有效数据,导致折线断裂:
    print(f"原数据1行数: {len(df)}, 原数据2行数: {len(df2)}, 合并后行数: {len(merg)}, 去空后行数: {len(lake_level)}")
    
  • 核对日期格式一致性:虽然已转为datetime类型,但两个原始CSV的日期可能存在精度差异(如一个带时分秒、一个仅日期),导致匹配异常,可查看索引细节:
    print(df.index.dtype, df2.index.dtype)
    print(df.index[:5], df2.index[:5])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:10:35