[Pandas] read_excel / to_excel
Pandas read_excel, Pandas to_excel, Excel pandas, 엑셀 pandas
정의
pandas.read_excel 는 Excel 파일 (.xlsx, .xls) 을 Pandas DataFrame 으로 읽는 함수. 한국 실무에서 매우 자주 쓰인다.
의존 라이브러리
| 형식 | 필요한 패키지 |
|---|---|
.xlsx | openpyxl |
.xls (구형) | xlrd (≤ 1.2.0) |
.xlsb | pyxlsb |
.ods | odfpy |
pip install openpyxl
기본 사용
df = pd.read_excel('data.xlsx') # 첫 시트
df = pd.read_excel('data.xlsx', sheet_name='Sheet2')
df = pd.read_excel('data.xlsx', sheet_name=0) # 0번째 시트
핵심 옵션
| 옵션 | 의미 |
|---|---|
sheet_name | 시트 이름/번호, None = 모든 시트 (dict 반환) |
header | 헤더 행 위치 |
skiprows | 건너뛸 행 |
usecols | ’A:C’ 또는 컬럼명 리스트 |
dtype | 컬럼별 타입 |
parse_dates | 날짜 파싱 |
na_values | NA 변환 값 |
engine | ’openpyxl’, ‘xlrd’, ‘pyxlsb’ |
여러 시트 한 번에
python
# 모든 시트를 dict[name → DataFrame] 으로
sheets = pd.read_excel('multi.xlsx', sheet_name=None)
print(list(sheets.keys())) # ['Sales', 'Returns', 'Inventory']
print(sheets['Sales'].shape) 결과
['Sales', 'Returns', 'Inventory']
(1234, 8)일부 영역만
# A1:D100 영역만
df = pd.read_excel('data.xlsx',
usecols='A:D',
nrows=100,
skiprows=5,
)
저장 (to_excel)
df.to_excel('out.xlsx', index=False, sheet_name='데이터')
# 여러 시트
with pd.ExcelWriter('out.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sales', index=False)
df2.to_excel(writer, sheet_name='Returns', index=False)
서식 / 스타일
xlsxwriter 또는 openpyxl 의 직접 API 사용. 단순 데이터 저장은 to_excel, 차트나 서식이 필요하면 xlsxwriter 의 raw API 를 결합.
with pd.ExcelWriter('styled.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Report', index=False)
workbook = writer.book
worksheet = writer.sheets['Report']
money_fmt = workbook.add_format({'num_format': '#,##0'})
worksheet.set_column('B:B', 12, money_fmt)
함정
1. Excel 의 자동 타입 추론
- 숫자처럼 보이는 문자 (
'0001') 가 정수로 변환됨 - 날짜처럼 보이는 문자가 datetime 으로 변환됨
- 해법:
dtype={'col': 'str'}
2. 큰 파일 성능
- Excel 자체가 압축된 XML 이라 read_csv 보다 훨씬 느리다
- 가능하면 CSV / Parquet 사용 권장
- 정 Excel 이 필요하면
engine='calamine'(pandas 2.2+) 가 빠름
3. 병합된 셀
- 병합된 셀은 첫 셀에만 값, 나머지는 NaN
- 해법:
df.ffill()로 forward fill
4. 시트 이름의 한글
- 일부 환경에서 한글 시트명이 깨질 수 있음,
engine='openpyxl'권장
참고
이 글의 용어 (3개)
- [Pandas] DataFramepandas
- 정의 은 2차원 레이블 테이블. 각 열이 , 모든 열이 같은 (행 라벨) 를 공유. SQL 테이블 / Excel 시트 / R data.frame 의 Python 대응체. 생성 <…
- [Pandas] read_csv / to_csvpandas
- 정의 는 CSV (Comma-Separated Values) 파일 또는 비슷한 텍스트 형식을 으로 읽는 함수. pandas 사용의 99% 가 여기서 시작. 대응 출력 함수는 . …
- [Pandas] read_json / to_jsonpandas
- 정의 은 JSON 문자열 또는 파일을 으로 변환. orient 파라미터가 핵심, JSON 구조를 어떻게 해석할지 결정한다. orient 옵션 비교 | orient | 구조 | 적…
💬 댓글