说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
有时,我们遇到超大的 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 的任何内容,而不需要事先将文件全部加载到内存。
(完)
更新时间:2022-07-25 09:11:45 标签:python excel 表头