繁体   English   中英

当我尝试使用 pd.read_csv() 读取 a.txt 文件时出现“ParserError”

[英]Getting "ParserError" when I try to read a .txt file using pd.read_csv()

我正在尝试将此数据集: COCOMO81转换为 arff。

在转换为.arff之前,我试图将其转换为.csv

我正在关注此链接来执行此操作。

我从 promise 站点获得了该数据集。 我将整个页面作为 cocomo81.txt 复制到记事本,现在我正在尝试使用 python 将 cocomo81.txt 文件转换为 .csv。(我打算稍后使用 weka 将 .csv 文件转换为 .arff)

但是,当我跑步时

import pandas as pd
read_file = pd.read_csv(r"cocomo81.txt")

我得到这个ParserError。

为了解决这个问题,我遵循了这个解决方案并将我的命令修改为

read_file = pd.read_csv(r"cocomo81.txt",on_bad_lines='warn')

我收到了一堆警告 - 你可以在这里看到它的样子

然后我跑了read_file.to_csv(r'.\cocomo81csv.csv',index=None)

但似乎对 ParserError 的修复在我的情况下不起作用,因为我的 cocomo81csv.csv 文件看起来像 Excel 中的THIS

有人可以帮助我了解我哪里出错了,以及如何使用 promise 存储库中的 .arff 格式数据集?

您首先需要解析 txt 文件。 @attribute 之后可以取列名

@attribute rely numeric
@attribute data numeric
@attribute cplx numeric
@attribute time numeric
..............................

而在csv文件中,只加载文件末尾@data之后的数据。 您可以复制/粘贴。

0.88,1.16,0.7,1,1.06,1.15,1.07,1.19,1.13,1.17,1.1,1,1.24,1.1,1.04,113,2040
0.88,1.16,0.85,1,1.06,1,1.07,1,0.91,1,0.9,0.95,1.1,1,1,293,1600
1,1.16,0.85,1,1,0.87,0.94,0.86,0.82,0.86,0.9,0.95,0.91,0.91,1,132,243
0.75,1.16,0.7,1,1,0.87,1,1.19,0.91,1.42,1,0.95,1.24,1,1.04,60,240
...................................................................

然后读取生成的 csv 文件

pd.read_csv(file, names=["rely", "data", "cplx", ...])

看起来它是一个 csv 文件,第一行是注释。 注释行由%字符和@ (?) 表示,实际的 csv 数据从第 230 行开始。

您应该跳过第一行并手动设置列名,尝试这样的事情:

# set column names manually
col_names = ["rely", "data", "cplx", "time", "stor", "virt", "turn", "acap", "aexp", "pcap", "vexp", "lexp", "modp", "tool", "sced", "loc", "actual" ]
filename = "cocomo81.arff.txt"

# read csv data
df = pd.read_csv(filename, skiprows=229, sep=',', decimal='.', header=None, names=col_names)

print(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM