본문 바로가기

파이썬 기초

[Python Pandas] 데이터 불러오기 CSV 파일

 

Python Pandas는 다음과 같은 다양한 형식의 데이터를 불러와서 데이터 프레임(DataFrame)에 저장할 수 있습니다.

  • Pickle - read_pickle()
  • CSV - read_csv()
  • Excel - read_excel(), ExcelWrite(), ExcelFile.parse()
  • JSON - read.json()
  • 클립보드 - read_clipboard()
  • HTML - read_html()
  • SQL - read_sql(), read_sql_table(), read_sql_query()

1. CSV 파일 불러오기

통상적으로 같은 데이터의 경우 CSV 파일의 용량이 더 적고 별도로 MS 오피스 프로그램이 설치되어 있지 않아도 사용 가능합니다.

pandas.read_csv() 함수를 사용하며 데이터 프레임(DataFrame)이 반환됩니다.

pandas.read_csv(
    filepath_or_buffer: Union[str, pathlib.Path, IO[~AnyStr]],
    sep=',',
    delimiter=None,
    header='infer',
    names=None,
    index_col=None,
    usecols=None,
    squeeze=False,
    prefix=None,
    mangle_dupe_cols=True,
    dtype=None,
    engine=None,
    converters=None,
    true_values=None,
    false_values=None,
    skipinitialspace=False,
    skiprows=None,
    skipfooter=0,
    nrows=None,
    na_values=None,
    keep_default_na=True,
    na_filter=True,
    verbose=False,
    skip_blank_lines=True,
    parse_dates=False,
    infer_datetime_format=False,
    keep_date_col=False,
    date_parser=None,
    dayfirst=False,
    cache_dates=True,
    iterator=False,
    chunksize=None,
    compression='infer',
    thousands=None,
    decimal: str = '.',
    lineterminator=None,
    quotechar='"',
    quoting=0,
    doublequote=True,
    escapechar=None,
    comment=None,
    encoding=None,
    dialect=None,
    error_bad_lines=True,
    warn_bad_lines=True,
    delim_whitespace=False,
    low_memory=True,
    memory_map=False,
    float_precision=None,
)

 

자주 사용하는 주요 인수를 정리해보면 다음과 같습니다.

filepath_or_buffer

 : 불러오기 할 파일 경로(웹상에 파일이 있을 경우에는 url)를 지정한다.

sep

 : 데이터들을 구분하고 있는 구분자를 지정한다. 기본값으로 쉼표( , )이다.

header

 : 열 이름으로 사용할 행 지정. 열(column) 제목으로 사용할 행을 지정한다.

index_col>

 : index로 사용할 열의 이름 또는 열의 번호를 지정한다. 생략하면 원본 데이터에 없는 0부터 시작하는 행 번호가 첫 번째 열에 추가된다.

encoding

 : 파일의 인코딩 지정한다.

 

 

실습을 위해 타이타닉 승객 정보가 있는 파일(titanic.csv)을 다운로드하여 실습할 소스 코드가 있는 폴더에 저장합니다.

titanic.csv
0.06MB

 

titanic.csv 파일을 메모장으로 열어서 살펴보면 데이터들이 쉼표( , )로 구분되어 있는 것을 확인할 수 있습니다.

CSV 파일 메모장으로 열기

 

pandas 라이브러리를 사용하기 위해 pandas 라이브러리를 먼저 import 하고 read_csv 메서드를 사용하여 CSV 파일로부터 데이터를 불러와서 데이터 프레임에 저장하여 봅시다.

read_csv()의 첫 번째 인수의 filepath_or_buffer에는 불러오기 할 파일을 지정하고 sep는 쉼표( , )를 지정하였습니다.

csv 파일 불러오기 예제

 

첫 번째 인수의 이름, filepath_or_buffer은 생략 가능하며, sep의 기본 값이 쉼표이기 때문에 생략해도 결과는 동일합니다.

csv를 데이터프레임으로 불러오기

 

read_csv()는 CSV 파일에서 데이터를 읽어 들여와 데이터 프레임이라는 자료형으로 반환한다. 반환된 데이터 프레임을 df에 저장하였습니다.

 

df를 살펴보면 다음과 같습니다.

df.head() 또는 df.tail()을 이용하면 처음부터 5행만 또는 마지막 5행만 확인하는 것도 가능합니다. df.head() 또는 df.tail()의 인수에 정수 값을 입력하면 원하는 행의 수를 지정할 수도 있습니다.

csv 파일 df 저장 결과

  • Passengerid : 승객 번호
  • Survived : 생존 여부(0 = 사망, 1 = 생존)
  • Pclass : 티켓 종류(1 = 1st, 2 = 2nd, 3 = 3rd)
  • Name: 승객 이름
  • Sex: 승객 성별(male=남성, female=여성)
  • Age: 승객 나이
  • SibSp: 배우자나 형제자매의 총합
  • Parch: 부모 자식 명수의 총합
  • Ticket: 티켓 번호
  • Fare: 운임
  • Cabin: 객실 번호
  • Embarked: 승선 부두(C = Cherbourg, Q = Queenstown, S = Southampton)

첫 번째 열에는 원본 데이터에는 없는 0부터 890의 인덱스가 자동으로 추가된 것을 확인할 수 있습니다.

 

index 하단에 891 rows x 12 columns는 데이터의 크기를 나타내며 열 이름과 인덱스를 제외한 순수 데이터의 가로, 세로 크기입니다.

 

데이터 프레임은 자신이 가지고 있는 데이터의 행과 열의 크기에 대한 정보를 shape 속성에 저장하고 있습니다.

실행시켜 보면 결과는 df 데이터의 행과 열의 크기가 튜플로 반환되며 1번째 값은 행의 크기이고, 2번째 값은 열의 크기입니다

dataframe shape 속성 결과

다음은 데이터 프레임의 열의 이름을 확인하기 위해 columns 속성을 이용할 수 있습니다. 실행해보면 12개의 열 이름이 확인 가능합니다. 

dataframe columns 속성 결과

이밖에도 데이터 프레임을 처음 불러오기를 실행한 경우라면 dtype 속성이나 info 메서드를 이용하여 데이터 프레임을 구성하고 있는 열들의 자료형 및 자료의 개수를 확인하는 습관은 정말 중요합니다.

데이터프레임 dtypes 속성 결과
데이터프레임 info 메서드 결과

 

 

지정한 열을 DataFrame의 인덱스로 사용하는 방법

위의 예에서 승객 번호(Passengerid)를 인덱스로 지정하여 CSV 파일에서 불러오기 해봅시다.

read.csv()에서 index_col이라는 인수에 열로 사용할 열의 이름 또는 열의 번호를 지정합니다.

index_cold의 기본 값은 None이기 때문에 생략하면 원본 데이터에 없는 0부터 시작하는 행 번호가 첫 번째 열에 추가됩니다.

Passengerid 열을 인덱스로 사용하기 위해서는 index_col=0 또는 index_col='Passengerid'를 지정하여 추가합니다.

csv파일 열 지정하기

실행 결과를 보면 Passengerid가 인덱스로 사용된 것을 볼 수가 있습니다.