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
相关产品推荐
相关产品推荐

