微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在pandas中使用read_excel提高进程速度?

我需要使用pd.read_excel来处理一个excel文件中的每个工作表.
但在大多数情况下,我不知道工作表名称.
所以我用它来判断excel中有多少张表:

i_sheet_count=0
i=0
try:
  df.read_excel('/tmp/1.xlsx',sheetname=i)
  i_sheet_count+=1
  i+=1
else:
  i+=1
print(i_sheet_count)

在这个过程中,我发现这个过程很慢,
那么,read_excel只能读取有限的行来提高速度吗?
我尝试了nrows但没有工作..但仍然很慢..

解决方法:

无需猜测即可阅读所有工作表

对pd.read_excel使用sheetname = None参数.这将把所有工作表读入数据帧的字典中.例如:

dfs = pd.read_excel('file.xlsx', sheetname=None)

# access 'Sheet1' worksheet
res = dfs['Sheet1']

限制行数或列数

您可以使用parse_cols和skip_footer参数来限制列数和/或行数.这将减少读取时间,并且还可以使用sheetname = None.

例如,以下内容将读取前3列,如果您的工作表有100行,则只读取前20行.

df = pd.read_excel('file.xlsx', sheetname=None, parse_cols='A:C', skip_footer=80)

如果您希望应用特定于工作表的逻辑,可以通过提取工作表名称来实现:

sheet_names = pd.ExcelFile('file.xlsx', on_demand=True).sheet_names

dfs = {}
for sheet in sheet_names:
    dfs[sheet] = pd.read_excel('file.xlsx', sheet)

提高绩效

将Excel文件读入Pandas自然比其他选项(CSV,Pickle,HDF5)慢.如果您希望提高性能,我强烈建议您考虑这些其他格式.

例如,一个选项是use a VBA script将Excel工作表转换为CSV文件;然后使用pd.read_csv.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐