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

Matplotlib可处理某CSV但无法处理同结构另一CSV的问题求助

排查CSV网速数据绘图报错的实用方法

1. 先核对CSV文件的格式一致性

  • 对比正常CSV和异常CSV的列数、列名:确认是否存在一个有表头另一个没有,或者某行因逗号缺失/多写导致列错位的情况
  • 检查异常CSV的异常行:用文本编辑器打开,逐行查看是否有空行、非数字的速度值(比如日志程序记录了"超时""失败"这类字符串)、特殊符号
  • 重点检查异常CSV的末尾几行:日志程序可能在结束运行时写入了不规范的内容

2. 给绘图代码加上容错处理

新手代码常因未处理异常值报错,以下是带排查功能的示例代码:

import pandas as pd
import matplotlib.pyplot as plt

try:
    # 读取CSV文件
    df = pd.read_csv('your_speed_log.csv')
    
    # 强制转换速度列为数值型,非数值转为空值
    df['download'] = pd.to_numeric(df['download'], errors='coerce')
    df['upload'] = pd.to_numeric(df['upload'], errors='coerce')
    
    # 删除包含空值的行
    df_clean = df.dropna(subset=['download', 'upload'])
    
    # 绘制图表
    plt.figure(figsize=(10,6))
    plt.plot(df_clean['time'], df_clean['download'], label='下载速度')
    plt.plot(df_clean['time'], df_clean['upload'], label='上传速度')
    plt.xlabel('时间')
    plt.ylabel('速度')
    plt.legend()
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()
    
    # 打印被剔除的异常行,方便定位问题
    if len(df) != len(df_clean):
        print("以下是异常数据行:")
        print(df[df.isna().any(axis=1)])
        
except Exception as e:
    print(f"错误详情:{str(e)}")

3. 根据错误信息直接定位问题

  • 若报错ValueError: could not convert string to float:说明某行速度数据不是数字,去CSV里找对应位置的非数值内容
  • 若报错IndexError: list index out of range:说明CSV某行列数和其他行不一致,检查该行的逗号数量
  • 若报错KeyError: 'download':说明CSV列名和代码里调用的列名不匹配,核对表头拼写

4. 检查日志程序的输出逻辑

  • 确认日志程序在网络异常时(比如断网),是否仍写入了合法的数值(比如0),而非字符串
  • 检查日志写入代码的分支逻辑:是否存在某个条件下少写了一列数据的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:20:20