"Life is too short, You need python"
보통 직장에서 Data 분석이나 업무 자동화(RPA)에 활용하기 위해 프로그램을 짜는 경우
시스템에서 내려받은 raw data는 보통 *.xls 또는 *.xlsx와 같은 엑셀(Excel) 형식의 파일(file)일 겁니다.
이를 전처리(가공) 또는 활용하기 위해서는 파일을 Loading하는 code가 포함되어 있으며
보통은 아래와 같은 형태로 작성되어 있을 겁니다.
코딩한 PC에서 사용 시 오류없이 동작하겠지만
팀 원 들에게 배포하기 목적 등으로 pyinstaller로 .exe file로 변환하여 실행 시
아래와 같은 에러 메세지를 접하는 상황이 있을 수 있습니다.
1. Excel file format cannot be determined, you must specify an engine manually.
Excel file format cannot be determined, you must specify an engine manually.
원인을 정확히 알지는 못하지만
별도 옵션이 없을 경우 기본 engine이 xlrd로 설정이 되어 있고, xlrd 업데이트 이후 잘 작동하지 않는 것으로 보입니다.
아래와 같이 manual로 engine을 'openpyxl'로 추가해 주면 간단히 해결이 됩니다.
단, 설치가 되어 있지 않으시다면 우선 아래와 같이 라이브러리를 인스톨 해 줘야 합니다.
pip install openpyxl
설치가 되었다면 아래와 같이 engine = 'openpyxl'을 추가해 줍니다.
df_raw = pd.read_excel(r'filepath/filename.xlsx', engine = 'openpyxl')
2. zipfile.BadZipFile: File is not a zip file
이렇게 수동으로 읽어오는 engine을 추가해서 해결이 된다면 다행이지만, 아래와 같은 문제에 부딪힐 수 있습니다.
BadZipFile: File is not a zip file
불러오는 파일이 zip 형식의 파일이 아니라는 건데 xlsx file은 zip file 형식이 맞지만
openpyxl과 excel 파일간 문제이며 다른 방법으로 해결해야 합니다.
(python 2.7 버전까지는 잘 작동했다고 합니다.)
불러와야 하는 data를 csv 형식으로 다운로드 가능하다면 csv로 다운로드 하셔서 사용하세요...
그럼 더 이상 문제가 발생하지 않을 겁니다.
df_raw = pd.read_csv(r'filepath/filename.csv')