PYTHON
1 报错语句
df = pd.read_csv('C:/Users/DD/Desktop/ml_data/地质数据/eghole.csv')
2 报错内容
ParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2
3 原因分析
读取文件报错,报错声明说是解析错误,那一般就是格式错误。我这里是直接把.xlsx的后缀改成了.csv,虽然在Excel中都可以正常显示,但是两者的格式是不一样的,所以pandas没有自动解决xlsx和csv之间格式差异也是很正常的。(但是pandas中的函数可以解决xlsxh和csv的转换问题)
4 解决方法
在Excel中将.xlsx文件另存为.csv文件,就能解决格式错误。
5 扩展--xlsx和csv格式差异
xlsx 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此;而xls 的核心结构是复合文档类型的结构,是一个特有的二进制格式。
csv是最通用的一种文本文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开,每一行数据都以回车结束,是一种ASCII文件。
6 pandas中csv和xlsx格式的转换
6.1 csv转xlsx
csv = pd.read_csv('1.csv', index_col=0 ) #index_col解决的是防止出现序号列
csv.to_excel('1.xlsx')
6.2 xlsx转csv
data_xls = pd.read_excel('1.xlsx',index_col=0 )
data_xls.to_csv('1.csv')
7 解码问题
如果出现解码问题,采用设置encoding的方法进行尝试,一般中文可以采用GBK或者GB2312。