PyCharm中使用Pandas创建DataFrame时出现UnicodeDecodeError错误
我来帮你搞定这个导入数据时遇到的编码错误!你碰到的这个UnicodeDecodeError提示'utf-8' codec can't decode byte 0xff in position 0,大概率是因为你的数据文件并非UTF-8编码,但Pandas默认用UTF-8去读取,所以才会解码失败。
先看下你遇到的完整错误信息:
File "pandas/_libs/parsers.pyx", line 562, in pandas._libs.parsers.TextReader.cinit
File "pandas/_libs/parsers.pyx", line 790, in pandas._libs.parsers.TextReader._get_header
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
你的导入代码大概是这样的:
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 省略其他导入语句 df = pd.read_csv("your_data_file") # 未指定编码导致错误
下面给你几个实用的解决办法:
指定正确的编码格式
开头的0xff字节很可能是UTF-16编码的BOM(字节顺序标记),你可以先试试用UTF-16编码读取:df = pd.read_csv("your_data_file", encoding='utf-16')如果是Windows系统下生成的中文文件,也可以尝试
gbk或者gb2312编码:df = pd.read_csv("your_data_file", encoding='gbk')自动检测文件编码
如果你不确定文件的具体编码,可以用chardet库来自动检测:
首先安装chardet:pip install chardet然后运行以下代码检测编码:
import chardet with open('your_data_file', 'rb') as f: encoding_result = chardet.detect(f.read()) print(f"检测到的编码是: {encoding_result['encoding']}")最后用检测出的编码去读取数据即可。
用兼容编码临时读入
如果以上方法都不行,可以试试latin-1编码,它能兼容所有字节,不会报错(可能显示乱码,但至少能读入数据,之后再处理编码转换):df = pd.read_csv("your_data_file", encoding='latin-1')
内容的提问来源于stack exchange,提问作者user9366862

