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

