'utf-8' codec can't decode byte 0x8b in position 2: invalid start byte

     用python的pandas模块中的pd.read_csv('Train_nyOWmfK.csv')函数读数据的时候遇到'utf-8' codec can't decode byte 0x8b in position 2: invalid start byte问题:

'utf-8' codec can't decode byte 0x8b in position 2: invalid start byte_第1张图片

找不到代码错误的原因,打开数据发现以下问题:

'utf-8' codec can't decode byte 0x8b in position 2: invalid start byte_第2张图片

点击是出现以下说明:

原来文件后缀虽然是CSV,但是文件时间却不是CSV文件。

'utf-8' codec can't decode byte 0x8b in position 2: invalid start byte_第3张图片

打开后发现文件的第一列是ID开头。

SYLK 文件是一个文本文件,开头的"ID"或"ID_xxxx",其中 xxxx 是文本字符串。 SYLK 文件的第一个的记录是在ID_Number 记录。 Excel 将识别该文本在文本文件开头时, 它会将该文件解释为 SYLK 文件。 Excel 将尝试从该SYLK 格式转换该文件,但不能这样做,因为"ID"字符后不有任何有效的 SYLK 代码。 因为 Excel不能转换该文件,您收到错误消息。

当您打开一个文本文件、 CSV 文件和文件的前两个字符是将大写字母"I","D"时,会发生此问题。
例如文本文件可能包含以下文本:

ID, STATUS 123, open 456, closed
如果前两个字母小写"i"和"d"不会发生此问题的 。

解决:
若想在 Excel 中打开您的文件,可以在一个文本编辑器中打开该文件,然后插入第一行开头处加一个撇号。
1.在文本编辑器 (如记事本) 中打开文本文件。 单击第一行文字在第一个字符之前。 按撇号键键盘 (') 上。
2.在 文件 菜单中上, 单击 保存 。 退出文本编辑器。 现在可以在 Excel中打开该文件。

或者直接对数据中的第一列改名或删除第一列。

如果这样做之后在Excel中没有问题,在python编译器中还是报错的话,那说明是编码问题,将pd.read_csv('Train_nyOWmfK.csv')改成pd.read_csv('Train_nyOWmfK.csv', encoding='ISO-8859-1')就可以了。

也就是在读取数据的时候,显式添加编码方式encoding='ISO-8859-1',对于别的编码问题 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)别也可以尝试解决。

 

你可能感兴趣的:(数学建模,时间预测,机器学习,图像处理,统计分析)