博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高效的利用pandas读取多个sheet的excel文件
阅读量:4101 次
发布时间:2019-05-25

本文共 2496 字,大约阅读时间需要 8 分钟。

如何更快更高效的利用pandas读取多个sheet的excel文件?

我们知道pandas的读取excel文件的常规方式是pd.read_excel(file, sheetname),我想很多人都是用这种常规的方式进行读取。

其实,sheetname是可以是数字的,代表每一个sheet的排序编号。

我们用python运行效率分析工具来看一下不同的模式下,他们的执行速度分别是怎么样的?

 

import timeitimport pandas as pdimport timefpath = r'F:\python_workspace\案例研究\爬虫\保证金监控中心\界面设计2\结算文件\xxxx_2018-07-12.xls'def read1_1(fpath, num):    for i in range(num):        io = pd.io.excel.ExcelFile(fpath)        data =pd.read_excel(io, sheetname='持仓明细')        data2 =pd.read_excel(io, sheetname='成交明细')        data2 =pd.read_excel(io, sheetname='成交明细')        #data =pd.read_excel(io, sheetname=4)        io.close()def read1_2(fpath, num):    for i in range(num):        io = pd.io.excel.ExcelFile(fpath)        #data =pd.read_excel(io, sheetname='持仓明细')        data =pd.read_excel(io, sheetname=4)        data2 =pd.read_excel(io, sheetname=2)        data2 =pd.read_excel(io, sheetname=2)        io.close()    def read2_1(fpath, num):    for i in range(num):        #io = pd.io.excel.ExcelFile(fpath)        data =pd.read_excel(fpath, sheetname='持仓明细')        data2 =pd.read_excel(fpath, sheetname='成交明细')        data2 =pd.read_excel(fpath, sheetname='成交明细')        #data =pd.read_excel(io, sheetname=4)        #io.close()            def read2_2(fpath, num):    for i in range(num):        data =pd.read_excel(fpath, sheetname=4)        data =pd.read_excel(fpath, sheetname=2)        data =pd.read_excel(fpath, sheetname=2)                @profiledef run(num):    read1_1(fpath, num)    read1_2(fpath, num)    read2_1(fpath, num)    read2_2(fpath, num)        run(100)

把上述代码存储为test_pdread.py文件后,在cmd下执行:

kernprof -l -v test_pdread.py

看一下执行结果:

F:\python_workspace\案例研究\爬虫\保证金监控中心\界面设计2>kernprof -l -v test_pdread.pyWrote profile results to test_pdread.py.lprofTimer unit: 3.11018e-07 sTotal time: 108.668 sFile: test_pdread.pyFunction: run at line 49Line #      Hits         Time  Per Hit   % Time  Line Contents==============================================================    49                                           @profile    50                                           def run(num):    51         1     47338937 47338937.0     13.5      read1_1(fpath, num)    52         1     47416650 47416650.0     13.6      read1_2(fpath, num)    53         1    127432634 127432634.0     36.5      read2_1(fpath, num)    54         1    127205921 127205921.0     36.4      read2_2(fpath, num)

很明显,执行速度差了一倍。

首先指向io的方式读取速度会更快一些。

 

 

注意:如果一个excel文件,你仅仅需要读取其中的1个sheet,那么所有的操作耗时是基本一致的。这里高效率是指的多个sheet表单的情况下。

转载地址:http://vwwsi.baihongyu.com/

你可能感兴趣的文章
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
QT跨MinGW和MSVC两种编译器的解决办法
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
i2c-tools
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>