Excel 文件的格式曾經發生過一次變化,在 Excel 2007 以前,使用擴展名為 .xls 格式的文件,這種文件格式是一種特定的二進制格式,最多支持 65,536 行,256 列表格。從 Excel 2007 版開始,默認采用了基於 XML 的新的文件格式 .xlsx ,支持的表格行數達到了 1,048,576,列數達到了 16,384。需要注意的是,將 .xlsx 格式的文件轉換為 .xls 格式的文件時,65536 行和 256 列之后的數據都會被丟棄。
Pandas 讀取 Excel 文件的引擎是 xlrd , xlrd 雖然同時支持 .xlsx 和 .xls 兩種文件格式,但是在源碼文件 xlrd/sheet.py 中限制了讀取的 Excel 文件行數必須小於 65536,列數必須小於 256。
這就導致,即使是 .xlsx 格式的文件, xlrd 依然不支持讀取 65536 行以上的 Excel 文件
openpyxl 是一個專門用來操作 .xlsx 格式文件的 Python 庫,和 xlrd 相比它對於最大行列數的支持和 .xlsx 文件所定義的最大行列數一致。
首先安裝 openpyxl :
pip install openpyxl
Pandas 的 read_excel 方法中,有 engine 字段,可以指定所使用的處理 Excel 文件的引擎,填入 openpyxl ,再讀取文件就可以了。
import pandas as pd
df = pd.read_excel(‘./data.xlsx’, engine=’openpyxl’)
print(len(df)) # 160000