PYTHON 엑셀

[ 판다스(Pandas) ] read_excel 함수 기본 설명

나루하루001 2025. 5. 15. 22:39
반응형



Pandas 소개 및 설치 방법

 

Pandas는 Python에서 데이터 분석과 조작을 위한 가장 강력한 라이브러리입니다.
데이터 과학자, 분석가, 개발자들이 구조화된 데이터를 효율적으로 처리하기 위해 널리 사용하고 있습니다.
특히 DataFrame이라는 2차원 데이터 구조를 통해 엑셀 스프레드시트와 유사한 방식으로 데이터를 다룰 수 있습니다.

 

Pandas 설치하기

 

Pandas를 설치하는 방법은 매우 간단합니다.
pip 또는 conda를 사용하여 쉽게 설치할 수 있습니다.

# pip를 사용한 설치
pip install pandas

# conda를 사용한 설치
conda install pandas

 

엑셀 파일을 읽기 위해서는 추가 라이브러리도 필요합니다.

# 엑셀 파일 처리를 위한 추가 라이브러리 설치
pip install openpyxl  # .xlsx 파일용
pip install xlrd      # .xls 파일용
📌 참고사항: Pandas 버전 1.2.0부터는 xlrd가 .xlsx 파일을 지원하지 않게 되었습니다. 따라서 최신 Excel 파일(.xlsx)을 다룰 때는 openpyxl을 반드시 설치해야 합니다.

 

반응형

read_excel 함수 기본 사용법

 

Pandas의 read_excel() 함수는 엑셀 파일을 DataFrame으로 불러오는 강력한 도구입니다.
가장 기본적인 사용법은 파일 경로만 지정하는 것입니다.

 

기본 사용 예제

import pandas as pd

# 기본 사용법 - 첫 번째 시트를 DataFrame으로 읽어옴
df = pd.read_excel('data.xlsx')

# 특정 시트 이름으로 읽기
df = pd.read_excel('data.xlsx', sheet_name='Sheet2')

# 시트 인덱스로 읽기 (0부터 시작)
df = pd.read_excel('data.xlsx', sheet_name=0)

# 여러 시트 한 번에 읽기 (딕셔너리 형태로 반환)
all_sheets = pd.read_excel('data.xlsx', sheet_name=None)

 

실행 결과 확인하기

# 불러온 데이터 확인
print(df.head())  # 상위 5개 행 출력

# 데이터 정보 확인
print(df.info())

# 기본 통계 정보 확인
print(df.describe())
💡 팁: head() 메서드는 기본적으로 상위 5개 행을 보여주지만, 매개변수로 숫자를 전달하면 원하는 개수의 행을 확인할 수 있습니다. 예: df.head(10)



주요 매개변수 상세 설명

 

read_excel() 함수는 다양한 매개변수를 제공하여 데이터를 원하는 형태로 불러올 수 있습니다.
주요 매개변수들의 기능과 사용법을 알아보겠습니다.

 

기본 파일 관련 매개변수

# 파일 경로 지정 (로컬 파일)
df = pd.read_excel('data.xlsx')

# URL에서 직접 읽기
df = pd.read_excel('https://example.com/data.xlsx')

# 파일 객체에서 읽기
with open('data.xlsx', 'rb') as f:
    df = pd.read_excel(f)

# 엔진 선택 (openpyxl, xlrd 등)
df = pd.read_excel('data.xlsx', engine='openpyxl')

 

데이터 선택 매개변수

# 특정 열만 선택하여 읽기
df = pd.read_excel('data.xlsx', usecols="A,C:F")  # A열과 C부터 F열까지
df = pd.read_excel('data.xlsx', usecols=[0, 2, 3, 4, 5])  # 인덱스로 지정
df = pd.read_excel('data.xlsx', usecols=['이름', '성적', '학년'])  # 열 이름으로 지정

# 특정 행 건너뛰기
df = pd.read_excel('data.xlsx', skiprows=3)  # 상위 3개 행 건너뛰기
df = pd.read_excel('data.xlsx', skiprows=[0, 2, 3])  # 특정 행 건너뛰기

# 특정 개수의 행만 읽기
df = pd.read_excel('data.xlsx', nrows=10)  # 상위 10개 행만 읽기

# 바닥 행 건너뛰기
df = pd.read_excel('data.xlsx', skipfooter=2)  # 마지막 2개 행 건너뛰기

 

헤더 및 인덱스 관련 매개변수

# 헤더 행 지정
df = pd.read_excel('data.xlsx', header=0)  # 첫 번째 행을 헤더로 사용 (기본값)
df = pd.read_excel('data.xlsx', header=1)  # 두 번째 행을 헤더로 사용
df = pd.read_excel('data.xlsx', header=None)  # 헤더 없음

# 멀티 인덱스 헤더
df = pd.read_excel('data.xlsx', header=[0, 1])  # 첫 번째, 두 번째 행을 멀티레벨 헤더로 사용

# 열 이름 직접 지정
df = pd.read_excel('data.xlsx', header=None, names=['이름', '나이', '성별', '점수'])

# 인덱스 열 지정
df = pd.read_excel('data.xlsx', index_col=0)  # 첫 번째 열을 인덱스로 사용
df = pd.read_excel('data.xlsx', index_col='학번')  # '학번' 열을 인덱스로 사용
df = pd.read_excel('data.xlsx', index_col=[0, 1])  # 멀티 인덱스 사용
📌 주의사항: headerskiprows를 함께 사용할 때는 주의해야 합니다. skiprows가 먼저 적용된 후 header가 적용되므로, 헤더 위치가 변경될 수 있습니다.



고급 사용법 및 팁

 

read_excel() 함수의 고급 기능을 활용하면 데이터 전처리 작업을 크게 줄일 수 있습니다.
데이터 타입 변환, 날짜 처리, 결측치 처리 등 다양한 고급 기능을 살펴보겠습니다.

 

데이터 타입 지정

# 특정 열의 데이터 타입 지정
df = pd.read_excel('data.xlsx', dtype={'나이': int, '점수': float, '이름': str})

# 모든 열에 동일한 데이터 타입 적용
df = pd.read_excel('data.xlsx', dtype=str)  # 모든 열을 문자열로 읽기

# dtype_backend 설정 (pandas 2.0 이상)
df = pd.read_excel('data.xlsx', dtype_backend='numpy_nullable')  # 결측치 처리 개선

 

날짜 데이터 처리

# 날짜 열 자동 인식
df = pd.read_excel('data.xlsx', parse_dates=True)

# 특정 열만 날짜로 변환
df = pd.read_excel('data.xlsx', parse_dates=['생년월일', '가입일'])
df = pd.read_excel('data.xlsx', parse_dates=[3, 5])  # 인덱스로 지정

# 날짜 형식 지정
df = pd.read_excel('data.xlsx', parse_dates=['생년월일'], date_format='%Y/%m/%d')

 

결측치 처리

# 결측치로 처리할 값 지정
df = pd.read_excel('data.xlsx', na_values=['N/A', '미입력', '-'])

# 결측치 필터링 비활성화 (모든 값을 그대로 읽기)
df = pd.read_excel('data.xlsx', na_filter=False)

# 기본 NA 값 유지 여부
df = pd.read_excel('data.xlsx', keep_default_na=False)  # 기본 NA 값을 결측치로 처리하지 않음

# 열별로 다른 NA 값 지정
na_values = {'점수': ['미응시', '-'], '등급': ['평가제외']}
df = pd.read_excel('data.xlsx', na_values=na_values)

 

값 변환 및 포맷팅

# 천 단위 구분자 처리
df = pd.read_excel('data.xlsx', thousands=',')

# 소수점 구분자 지정
df = pd.read_excel('data.xlsx', decimal='.')

# True/False 값 지정
df = pd.read_excel('data.xlsx', true_values=['예', 'Y', '동의'], false_values=['아니오', 'N', '거부'])

# 컨버터 함수 사용
converters = {
    '전화번호': lambda x: f"010-{x[-8:-4]}-{x[-4:]}",  # 전화번호 형식 변환
    '이름': lambda x: x.strip().upper()  # 공백 제거 후 대문자 변환
}
df = pd.read_excel('data.xlsx', converters=converters)
💡 고급 팁: converters 매개변수는 복잡한 데이터 변환 로직을 적용할 때 특히 유용합니다. 함수를 정의하여 각 열의 값을 원하는 형태로 변환할 수 있습니다.



자주 발생하는 문제와 해결 방법

 

read_excel() 함수를 사용하다 보면 몇 가지 일반적인 문제에 직면할 수 있습니다.
이러한 문제들의 해결 방법을 알아보겠습니다.

 

엔진 관련 오류

# 'xlrd' 엔진 오류 해결 (.xlsx 파일)
df = pd.read_excel('data.xlsx', engine='openpyxl')

# 'openpyxl' 엔진 오류 해결 (.xls 파일)
df = pd.read_excel('data.xls', engine='xlrd')

 

메모리 문제 해결

# 대용량 파일 처리 - 필요한 열만 선택
df = pd.read_excel('large_data.xlsx', usecols=['이름', '점수'])

# 청크 단위로 처리
for chunk in pd.read_excel('large_data.xlsx', chunksize=10000):
    # 각 청크 처리
    process_data(chunk)

 

인코딩 문제

# 인코딩 문제 해결을 위한 storage_options 사용
df = pd.read_excel('data.xlsx', storage_options={'encoding': 'utf-8'})

# 클라우드 스토리지 접근
df = pd.read_excel('s3://bucket/data.xlsx', 
                  storage_options={'key': 'access_key', 'secret': 'secret_key'})

 

숨겨진 시트 및 데이터 처리

# 모든 시트 확인
xl = pd.ExcelFile('data.xlsx')
print(xl.sheet_names)  # 모든 시트 이름 출력 (숨겨진 시트 포함)

# 숨겨진 시트 읽기
df = pd.read_excel('data.xlsx', sheet_name='숨겨진시트')
⚠️ 주의: 매우 큰 엑셀 파일을 처리할 때는 read_excel() 대신 openpyxl이나 xlrd 라이브러리를 직접 사용하여 스트리밍 방식으로 처리하는 것이 더 효율적일 수 있습니다.



결론 및 요약

 

Pandas의 read_excel() 함수는 엑셀 데이터를 Python으로 가져오는 가장 강력하고 유연한 도구입니다.
이 포스팅에서 다룬 주요 내용을 요약하면 다음과 같습니다:

  • Pandas와 필요한 라이브러리 설치 방법
  • 기본적인 엑셀 파일 읽기 방법
  • 다양한 매개변수를 활용한 데이터 선택 및 필터링
  • 데이터 타입 지정 및 변환 방법
  • 날짜 데이터 처리와 결측치 관리
  • 자주 발생하는 문제와 해결 방법

read_excel() 함수의 다양한 매개변수를 적절히 활용하면, 데이터 불러오기 단계에서 많은 전처리 작업을 수행할 수 있어 전체 데이터 분석 과정의 효율성을 크게 높일 수 있습니다.

🔍 추가 학습: 이 포스팅에서는 read_excel() 함수만 다루었지만, Pandas에는 to_excel() 함수를 통해 DataFrame을 엑셀 파일로 저장하는 기능도 있습니다. 두 함수를 함께 활용하면 엑셀 데이터의 완벽한 입출력 파이프라인을 구축할 수 있습니다.
[ 파이썬 관련 블로그 글 목록 ] 

파이썬(Python) 블로그 목록
반응형