반응형
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
를 이용해 읽어들이는 것이다.
728x90
'프로그래밍 > Python' 카테고리의 다른 글
[Python] cmd 에서 python 인터프리터 진입시 UnicodeDecodeError (0) | 2019.06.15 |
---|---|
[Python|OPENAPI] 기상청 기상관측 자료 OPENAPI requests 샘플코드 (0) | 2019.06.10 |
[Anaconda] jupyter notebook 500 internal error (4) | 2019.03.15 |
PIP 수동으로 설치하기 (0) | 2019.02.13 |
[Konlpy|Mecab] Ubuntu 에서 Mecab-ko를 설치했으나, Mecab이 설치되었는지를 다시 묻는다. (1) | 2018.12.06 |