parser_error UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes
从报错信息来看,核心问题是使用pd.read_csv()读取Excel文件(.xlsx)导致的编码错误,具体原因和解决方法如下:
一、错误原因分析
-
文件格式与读取方法不匹配
你的代码用pd.read_csv()读取了一个.xlsx格式的文件(国际股票价格指数日交易数据表.xlsx),但read_csv()是专门用于读取CSV格式(文本文件)的函数,无法正确解析Excel的二进制格式(.xlsx),导致读取时出现编码混乱(UnicodeDecodeError)。 -
编码问题的本质
即使忽略格式问题,Excel文件的二进制内容被当作文本文件(CSV)读取时,会触发编码解析错误(因为Excel不是纯UTF-8文本),这就是报错中“'utf-8' codec can't decode bytes”的原因。
二、解决方法
1. 使用正确的函数读取Excel文件
读取 .xlsx 格式文件需要用 pd.read_excel() 函数(而非 read_csv()),并确保安装了Excel解析依赖 openpyxl(针对.xlsx格式)。
修正代码:
import pandas as pd# 读取Excel文件(.xlsx)需用read_excel,而非read_csv
data = pd.read_excel('data/国际股票价格指数日交易数据表.xlsx')
2. 安装必要的依赖库
如果运行时提示 ModuleNotFoundError: No module named 'openpyxl',需先安装解析Excel的库:
# 在终端或命令行中执行
pip install openpyxl
三、补充说明
pd.read_csv():仅用于读取 .csv 格式的文本文件。pd.read_excel():用于读取 .xlsx 或 .xls 格式的Excel文件,其中.xlsx需要openpyxl库,.xls需要xlrd库(注意:xlrd现在仅支持.xls,不支持.xlsx)。- 检查文件路径:确保
data/国际股票价格指数日交易数据表.xlsx路径正确,文件确实存在于该位置(相对路径是相对于你的Python脚本所在目录)。
按以上方法修改后,即可正常读取Excel文件。
