[英]Is there a faster way to read excel files to pandas dataframe
我大約有700個excel文件,需要通過刪除一些標頭和更改某些列名將其轉換為csv文件。 我設法實現了解決方案,但是它很慢。 我發現,使用熊貓讀取Excel到數據框需要花費大量時間,如下所示:
df = pd.read_excel(file_path, skiprows=self.skip_rows)
我猜有一些UNIX命令可以快速完成此操作。 但是我想用python解決。 還有其他更快的庫嗎? 我也想知道為什么讀取excel文件需要更長的時間,我可以理解如果我們要保留excel的樣式,顏色則需要更長的時間。 但是,就我而言,我所需要的只是將其讀取到數據幀中。
以下是版本號:
我發現熊貓用python讀取大型excel工作簿很慢。 Openpylx也可能很慢,但是如果您只想從excel工作表中獲取值,那么有一種方法可以使速度顯着提高。
這些函數將很快返回您指定的值范圍。
from openpyxl import load_workbook
from copy import copy,deepcopy
from itertools import islice
import string
def col2num(col):
num = 0
for c in col:
if c in string.ascii_letters:
num = num * 26 + (ord(c.upper()) - ord('A')) + 1
return num
def get_worksheet_range(ws, r_start=1,c_start=1,r_end=-1,c_end=-1):
if isinstance(c_start,int)==False:
c_start=col2num(c_start)
if isinstance(c_end,int)==False:
c_end=col2num(c_end)
if r_end<=0: r_end=ws.max_row
if c_end<=0: c_end=ws.max_row
outrange=[x[:] for x in [[None] * (c_end-c_start+1)] * (r_end-r_start+1)]
i=0
for row in islice(ws.values,r_start-1,r_end):
j=0
for value in islice(row,c_start-1,c_end-1):
outrange[i][j]=value;j=j+1
i=i+1
return outrange
wb=load_workbook(filename=r"c:\some_excel_file.xlsx",read_only=True)
ws=wb['SomeWorkSheet']
datarange=get_worksheet_range(ws)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.