python
excel
表头
说明
《Python 教程》 帮助读者成为泛程序员,持续修订中,提供建议、纠错、催更加微信 gairuo123。查看 更新日志。作者开办 Python 数据分析培训,详情 Python 数据分析培训。
![]() |
本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
有时,我们遇到超大的 Excel 数据文件需要读取,但我们只需要它的表头,如果使用 pandas 来读取(如下代码)会特别慢,因为它会先将整个文件加载到内存。
import pandas as pd
path = '/Users/hui/Downloads/RFM用户分层.xlsx'
df = pd.read_excel(path)
df.columns
# ...
这种情况,我们可以使用 openpyxl 库的 load_workbook 函数来读取,但要记得将 read_only 参数的值指定为 True,这样就返回 ReadOnlyWorksheet 对象,它是只读的,与普通的 Workbook 对象不同,它将延迟加载(lazy loading),最后必须使用 close() 方法显式关闭工作簿。
import openpyxl as opx
path = '/Users/hui/Downloads/RFM用户分层.xlsx'
# https://openpyxl.readthedocs.io/en/stable/optimized.html
wb = opx.load_workbook(path, read_only=True)
sheet = wb.active
cols = [i.value for i in sheet[1]]
wb.close()
cols
'''
['姓名',
'最近一次购买日期',
'距今天数',
'累计购买次数',
'累计金额',
'R得分-分位数',
'F得分-分位数',
'M得分-分位数',
'R得分-标准差',
'F得分-标准差',
'M得分-标准差',
'R分类',
'F分类',
'M分类',
'综合得分']
'''
以上代码中,wb.active
为当前打开的工作簿,加载文件是默认是第一个,列表推导式中的 sheet[1]
为工作薄第一行,i 为每个单元格。
这样就能快速得到工作工作簿的表头,此方法可以快速得到 Excel 的任何内容,而不需要事先将文件全部加载到内存。
(完)