본문 바로가기

프로그래밍/Python

pandas 의 read_excel 읽기 속도를 좀 더 빠르게 하는 방법

728x90

출처 : https://stackoverflow.com/questions/50695778/how-to-increase-process-speed-using-read-excel-in-pandas

pandas 의 read_excel 읽기 속도를 좀 더 빠르게 하는 방법

읽을 행과 열의 수를 제한한다

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)

퍼포먼스 향상시키기

엑셀파일을 판다스로 읽어들이는 것은 당연히 다른 방법(CSV, Pickle, HDF5)보다 느리다. 성능을 향상시키려면, 이들 다른 포맷을 고려해 보길 권한다.

예를 들어, 한가지 다른 방법은, VBA 스크립트를 이용해 엑셀파일을 CSV 파일로 먼저 변환( https://stackoverflow.com/a/28769537/9209546 )하고, 다음에 pd.read_csv 를 이용해 읽어들이는 것이다.