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

使用Pandas绘制CSV数据时无法显示全部数据的问题

解决Pandas读取CSV绘图仅显示部分数据的问题

看起来你遇到的问题大概率是skipfooter参数在Pandas中的兼容性问题,或者是行数计算错误导致有效数据被意外跳过了。我来给你几个可行的解决方案:

1. 放弃skipfooter,改用数据框截取(最可靠)

Pandas默认的C解析引擎并不支持skipfooter参数,当你设置这个参数时,Pandas会自动切换到Python引擎,但Python引擎处理尾部行时偶尔会出现识别偏差,导致有效数据被误删。你可以先读取所有有效起始行的数据,再用iloc去掉尾部不需要的行:

import pandas as pd
import matplotlib.pyplot as plt

headers = ['Voltage (V)', 'Pixel 1']
# 先跳过前2行无效内容,读取剩余所有行
df_full = pd.read_csv(filename, skiprows=2, names=headers)
# 去掉最后126行无效内容,再设置Voltage为索引
df = df_full.iloc[:-126].set_index('Voltage (V)')

# 验证数据行数是否符合预期
print(f"有效数据行数:{df.shape[0]}")

df.plot()
plt.show()

2. 确认行数计算是否准确

手动检查你的CSV文件总行数,然后计算:总行数 - 2(skiprows) - 126(skipfooter)是否等于你手动清理后的有效数据行数。如果数值不匹配,说明你设置的skiprows或skipfooter数值有误,比如可能前3行才是无效内容,或者尾部只有120行需要跳过。

你可以用print(df.shape)查看读取后的数据框行数,对比手动清理后的行数,快速定位问题。

3. 显式指定Python引擎(备选方案)

如果你坚持要用skipfooter,可以显式指定engine='python',避免引擎切换时的潜在问题:

df = pd.read_csv(
    filename,
    skiprows=2,
    skipfooter=126,
    names=headers,
    index_col=0,
    engine='python'
)

不过这个方案还是不如第一种可靠,因为Python引擎处理大文件时性能较差,且对某些非标准CSV格式的容错性不如C引擎。

最后,建议你读取数据后用df.head(20)和df.tail(20)查看数据的首尾内容,确认没有把有效数据漏掉,这样能快速验证读取逻辑是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:30:40