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

无法绘制pandas DataFrame列图表或使用.tolist()方法的问题

问题解决方法

核心问题分析

你的代码出现的异常和数据转换问题,主要是CSV读取时的分隔符配置不当、编码/文件流处理不规范,导致ch104列混入非数值或空值,进而引发绘图错误和列表转换异常。


修正后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 直接用文件路径,让pandas处理文件读取
file_path = r"C:\Users\avalcarcel\Downloads\Data INSTR 9 8_16_2022 11_02_42.csv"
columns = ["date","time","ch104","alarm104","ch114","alarm114","ch115","alarm115","ch116","alarm116","ch117","alarm117","ch118","alarm118"]

# 优化读取参数
df = pd.read_csv(
    file_path,
    sep='[, ]+',  # 匹配1个或多个逗号/空格,避免生成空值列
    encoding='UTF-16 LE',
    names=columns,
    header=15,
    on_bad_lines='skip',
    engine='python',
    dtype={'ch104': str}  # 先按字符串读取,避免解析异常
)

# 转换为数值类型,无效值转为NaN
df['ch104'] = pd.to_numeric(df['ch104'], errors='coerce')

# 过滤空值行
df = df.dropna(subset=['ch104'])

# 生成scan序列
scan = list(range(1, len(df)+1))

# 绘图
plt.plot(scan, df['ch104'])
plt.show()

# 验证列表转换
ch104_list = df['ch104'].tolist()
print(ch104_list[:10])

关键修正点

  1. 文件读取方式:去掉手动open,让pandas直接读取文件路径,避免编码和文件流处理不一致的问题。
  2. 分隔符优化:把sep='[, ]'改为sep='[, ]+',匹配连续的逗号/空格,防止因分隔符不规范生成多余空值列。
  3. 数据类型处理:先按字符串读取ch104,再用pd.to_numeric转换为数值类型,自动处理数据中的异常字符(转为NaN)。
  4. 空值过滤:用dropna移除ch104为空的行,确保绘图和列表转换的都是有效数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:45:42