使用pd.read_csv读取COCOMO81文本文件遇ParserError,转CSV异常求助
问题原因与解决方案
问题原因
- 你保存的
cocomo81.txt并非纯ARFF数据集:复制网页内容会混入网页HTML代码、导航栏等冗余内容,完全不符合ARFF格式规范,也不是CSV结构,导致pandas解析失败。 - 错误使用CSV解析器处理ARFF:ARFF是机器学习专用数据集格式,包含
@relation、@attribute、@data等专属标记,和逗号分隔的CSV结构完全不同。用pd.read_csv直接读取必然解析混乱,添加on_bad_lines='warn'只是跳过错误行,最终得到的是残缺且格式错乱的数据,因此Excel显示异常。
正确使用ARFF数据集的步骤
1. 获取正确的ARFF文件
直接从promise仓库下载原始的COCOMO81.arff文件,不要复制网页内容,确保文件是纯ARFF格式的原始数据集。
2. 用专用库解析ARFF并转换为CSV
Python中处理ARFF最常用的是liac-arff库,操作步骤如下:
- 安装依赖库:
pip install liac-arff
- 解析并转换的代码:
import arff import pandas as pd # 读取原始ARFF文件 with open('COCOMO81.arff', 'r', encoding='utf-8') as f: arff_data = arff.load(f) # 转换为DataFrame,提取属性名作为列名 df = pd.DataFrame(arff_data['data'], columns=[attr[0] for attr in arff_data['attributes']]) # 保存为标准CSV文件 df.to_csv('cocomo81.csv', index=False, encoding='utf-8')
生成的CSV文件可直接用Excel正常打开,数据结构完全正确。
备选方案:用SciPy解析
若已安装SciPy库,也可使用其内置的ARFF解析工具:
from scipy.io import arff import pandas as pd # 读取ARFF文件 data, meta = arff.loadarff('COCOMO81.arff') # 转换为DataFrame并处理字节型字符串 df = pd.DataFrame(data) df = df.applymap(lambda x: x.decode('utf-8') if isinstance(x, bytes) else x) # 保存为CSV df.to_csv('cocomo81.csv', index=False, encoding='utf-8')
内容的提问来源于stack exchange,提问作者gugu
相关产品推荐
相关产品推荐

