2019-03-23

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。

 后记:下次有时间再对encoding 和decoding进行学习,之前学的长时间没复习都忘了。

你可能感兴趣的:(2019-03-23)