목차
데이터 분석을 위해 우선적으로 데이터를 불러와야 합니다. 파이썬으로 데이터를 엑셀 파일로부터 불러오는 함수가 있습니다. pandas 라이브러리의 read_csv()와 read_excel()이 그러한 기능을 합니다. read_csv()와는 다르게 read_excel()의 경우 엑셀이 갖는 기능 때문에 좀 더 복잡하게 사용될 수 있습니다. 그럼 read_excel() 함수에 대해 알아보겠습니다.
1. pandas.read_excel() 함수의 기본 형태
pandas는 처음 import 할 때 축약어 'pd'로 불러옵니다. read_excel()은 엑셀의 기본 포맷인 '.xlsx'과 '.xls'의 파일을 불러올 수 있으며, 매크로 형식인 '.xlsm'의 확장자의 파일도 불러올 수 있습니다. 아래와 같이 read_excel() 함수에는 많은 인자들이 있지만, 'io'만 입력해도 실행됩니다.
import pandas as pd
pd.read_excel(
io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
squeeze=False,
dtype=None,
engine=None,
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
verbose=False,
parse_dates=False,
date_parser=None,
thousands=None,
comment=None,
skipfooter=0,
convert_float=True,
mangle_dupe_cols=True,
**kwds
)
2. read_excel() 함수의 기본 인자
io :
읽을 Excel 파일의 경로, URL, 파일 객체(File-like object) 또는 ExcelFile 객체입니다. 경로 문자열은 파일 시스템에서 파일을 찾기 위해 사용될 수 있습니다. 예를 들어, 'path/to/file.xlsx'와 같이 경로와 경로 내 파일의 확장자를 포함한 내용을 전부 다 작성해줘야 합니다. 프로그램 파일과 같은 경로에 있을 경우에는 파일명만 넣어줘도 작동합니다.
df = pd.read_excel('path/to/file.xlsx')
데이터의 경로가 정해져 있고 해당 경로 내에 많은 파일들을 동시에 불러올 경우가 많기 때문에 위의 방식처럼 경로를 텍스팅 하는 것보다 경로를 변수로 지정해 다루는 것이 함수 사용에 용이합니다. 아래와 같이 사용할 경우 file_name이 리스트로 되어 있다면 for문을 통해 여러 개의 파일을 한 번에 불러올 수 있습니다.
file_path = 'path/to/'
file_name = 'file.xlsx'
df = pd.read_excel(file_path + file_name)
sheet_name :
읽어 들일 시트의 이름이나 인덱스입니다. 기본값은 0으로 첫 번째 시트를 읽습니다. 숫자(0부터 시작하는 인덱스) 또는 문자열(시트의 이름)을 사용할 수 있습니다. 시트 이름의 리스트를 전달하여 여러 시트를 동시에 읽을 수도 있습니다. csv파일과 다르게 excel 파일의 경우 여러개의 'sheet'가 존재할 수 있습니다. 여러 시트 중 특정 시트의 데이터만을 불러올 경우 사용할 수 있습니다.
df = pd.read_excel('path/to/file.xlsx', sheet_name='Sheet1')
header :
열 이름으로 사용할 행의 인덱스입니다. 기본값은 0으로 첫 번째 행을 열 이름으로 사용합니다. None을 전달하면 모든 행을 데이터로 처리하고 열 이름이 없다고 가정합니다.
df = pd.read_excel('path/to/file.xlsx', header=0)
names :
열 이름으로 사용할 리스트입니다. header=None으로 설정한 경우에 사용됩니다. names를 제공하지 않으면 자동으로 정수 열 이름을 할당합니다.
df = pd.read_excel('path/to/file.xlsx', header=None, names=['A', 'B', 'C'])
index_col :
행 인덱스로 사용할 열의 인덱스나 열 이름입니다. 기본값은 None으로 행 인덱스를 사용하지 않습니다.
df = pd.read_excel('path/to/file.xlsx', index_col='ID')
usecols :
읽어 들일 열의 인덱스나 열 이름의 리스트입니다. 기본값은 None으로 모든 열을 읽습니다. 사용할 열만 선택하여 읽고자 할 때 유용합니다.
df = pd.read_excel('path/to/file.xlsx', usecols=[0, 2, 4])
squeeze :
데이터가 하나의 열만 있는 경우에 Series 객체로 반환할지 여부를 결정하는 불리언 값입니다. 기본값은 False로 DataFrame을 반환합니다. 만약 하나의 열만 있는 경우에 Series로 반환받고 싶다면 squeeze=True로 설정할 수 있습니다.
series = pd.read_excel('path/to/file.xlsx', squeeze=True)
dtype :
열의 데이터 타입을 지정하는 딕셔너리입니다. 열 이름을 키로, 데이터 타입을 값으로 지정합니다. 예를 들어, {'컬럼명': np.float64}와 같이 사용할 수 있습니다. 이를 통해 특정 열의 데이터 타입을 미리 지정할 수 있습니다.
df = pd.read_excel('path/to/file.xlsx', dtype={'A': float, 'B': int})
engine :
사용할 엔진을 지정하는 문자열입니다. 기본값은 None으로 pandas가 가능한 엔진 중 가장 빠른 엔진을 자동으로 선택합니다. 'xlrd', 'openpyxl', 'odf' 등의 엔진을 사용할 수 있습니다. 엔진을 명시적으로 지정하는 것은 파일을 읽는 방식과 속도에 영향을 줄 수 있습니다.
df = pd.read_excel('path/to/file.xlsx', engine='openpyxl')
converters :
열별로 적용할 변환 함수를 지정하는 딕셔너리입니다. 열 이름을 키로, 변환 함수를 값으로 지정합니다. 예를 들어, {'날짜': pd.to_datetime}와 같이 사용할 수 있습니다. 이를 통해 특정 열의 데이터를 사용자 정의 변환 함수를 통해 처리할 수 있습니다.
from dateutil.parser import parse
df = pd.read_excel('path/to/file.xlsx', converters={'Date': parse})
3. 그 외 인자들
true_values
참으로 해석될 값의 리스트입니다. 'Yes', 'True', '1'과 같은 값을 True로 처리하고자 할 때 사용합니다. 기본값은 None으로 설정되어 있으며, 기본적으로 pandas가 불리언 값을 자동으로 인식합니다.
false_values
거짓으로 해석될 값의 리스트입니다. 'No', 'False', '0'과 같은 값을 False로 처리하고자 할 때 사용합니다. 기본값은 None으로 설정되어 있으며, 기본적으로 pandas가 불리언 값을 자동으로 인식합니다.
skiprows
읽어 들이지 않을 시작 행의 수입니다. 정수 값이나 리스트로 전달할 수 있습니다. 첫 번째 행을 건너뛰고 데이터를 읽고 싶을 때 skiprows=1로 설정할 수 있습니다. 리스트로 여러 행을 건너뛰고 싶을 때 skiprows=[1, 2, 3]와 같이 설정할 수 있습니다. 엑셀 파일의 초기 열들에 데이터가 아닌 정보의 내용이 있을 경우 이 인자를 사용하여 데이터만 불러오게 할 수 있습니다.
nrows
읽을 행의 수입니다. 파일에서 지정된 행 수만큼 데이터를 읽고 나머지는 무시합니다. 예를 들어, 처음 100개의 행만 읽고 싶을 때 nrows=100으로 설정할 수 있습니다.
na_values
누락된 값을 나타내는 추가적인 값의 리스트입니다. 이 리스트에 포함된 값들은 NaN으로 처리됩니다. 예를 들어, 'NA', 'N/A', 'NULL'과 같은 문자열을 누락된 값으로 처리하고자 할 때 사용합니다. 기본값은 None으로 설정되어 있으며, pandas는 기본적으로 누락된 값을 인식하여 NaN으로 처리합니다.
4. 마치며
지금까지 파이썬 라이브러리의 pandas의 함수인 read_excel() 함수의 기본 형태와 각 인자들에 대한 설명을 하였습니다. 실제 파일을 불러들일 때는 많은 인자들을 사용하지 않습니다. 기본적은 2절에서 설명한 기본인자들을 잘 조합하면 파일을 읽어 들이는데 큰 문제는 없을 겁니다. 다만, 파일의 형태가 다 같은 것이 아니기 때문에 그때마다 인자의 값을 조절해 가며 프로그램을 작성해야 합니다.