Python/Pandas

[Pandas] 파이썬 csv, tsv 파일 읽기, 내보내기 : read_csv, to_csv

jimmy_AI 2022. 1. 11. 11:35
반응형

파이썬 판다스에서 csv파일로 데이터프레임 만들기

용량에 대한 효율이 좋아 데이터프레임을 저장하고 불러올 때 많이 사용하는

csv파일을 읽어오고 저장할 수 있는 판다스의 read_csv, to_csv 함수의 사용법에 대하여

많이 사용되는 기능 위주로 살펴보도록 하겠습니다.

 

먼저, 다음과 같은 간단한 내용이 student.csv 파일로 저장되어있다고 가정해보겠습니다.

이 파일을 메모장으로 열게되면 다음과 같이 콤마(,)로 각 내용이 구분되어 있습니다.

 

 

csv 파일 읽어오기 함수 : pd.read_csv

pd.read_csv 함수의 가장 기본적인 사용법은 csv 파일의 디렉토리를 input으로

지정해주시면 기본 옵션으로 파일을 읽어와 데이터프레임을 만들어 줍니다.

 

디렉토리는 작업중인 파이썬 파일을 기준으로 작성해주시면 되며,

csv 파일과 파이썬 파일이 같은 폴더에 있다면 csv 파일 이름만 적어주어도 됩니다.

import pandas as pd

df = pd.read_csv('student.csv')
df

 

 

인덱스 column 지정 : index_col 인자

기본적으로 모든 열들을 값으로 취급하고, 인덱스는 0, 1, 2, ...의 값으로 지정해주게 되는데,

만일 특정 열 자체를 인덱스로 취급하고 싶다면 index_col 인자에 해당 열의 위치 번호

지정해주시면 됩니다.(가장 첫 열은 0번 기준)

 

가장 첫 열인 '학번' 열을 index로 삼아보도록 하겠습니다.

df = pd.read_csv('student.csv', index_col = 0)
df

만일 '이름' 열을 인덱스로 삼고 싶다면 index_col = 1,

'전공' 열을 인덱스로 삼고 싶다면 index_col = 2 처럼 지정해주시면 됩니다.

반응형

tsv 등 다른 형식 파일 열기 옵션 : sep 인자

만일, 열려는 파일이 콤마로 구분된 csv 파일이 아니라

탭(\t)으로 구분된 tsv 파일 등 다른 형식의 파일이더라도

read_csv 함수를 이용하여 파일을 열 수 있습니다.

 

내용을 구분하고 있는 문자를 sep 인자에 지정해주시면 됩니다.

기본 값은 콤마(,)로 csv 파일에서는 지정할 필요가 없으며,

tsv 파일인 경우에는 \t로 지정해주시면 됩니다.

텍스트 파일(txt)에서도 마찬가지 원리로 read_csv 함수 사용이 가능합니다.

# 열려는 파일이 tsv 파일인 경우
df = pd.read_csv('student.tsv', sep = '\t')

# 열려는 파일이 공백을 기준으로 내용이 구분된 txt 파일인 경우
df = pd.read_csv('student.txt', sep = ' ')

 

 

파일 인코딩 형식 지정 : encoding 인자

만일, 파일을 여는 과정에서 UnicodeDecodeError가 발생하였다면,

인코딩 형식이 일치하지 않아 파일 내 값들을 읽어올 수 없는 상황이므로,

encoding 인자를 통하여 인코딩 방식을 지정해주어야 합니다.

 

대표적으로 많이 사용되는 인코딩 방식은 'utf-8', 'cp949', 'euc-kr' 등이 있으니,

파일의 인코딩 방식을 모르는 경우에는 위 인코딩 방식들을 시도해보십시오.

df = pd.read_csv('student.csv', encoding = 'utf-8')
df

 

 

기타 유용한 인자

참고로, read_csv 함수에서 제공하는 인자의 개수는 수십 가지로 매우 다양하지만,

여기서는 그나마 많이 사용할만한 몇 가지 인자의 종류만 추가로 다루고

자세한 설명은 생략하도록 하겠습니다.(더 궁금하신 분은 공식 document를 참고하세요.)

 

engine : 'c', 'python' 처럼 지정, 'c'가 속도는 빠르나, feature-complete하지 않을 수 있음

skiprows : 특정 행 위치부터 읽어오고 싶을 때 사용, engine = 'c'에서는 미지원

na_values : 특정 데이터 값들을 결측값으로 취급하고 싶은 경우 목록 지정

keep_default_na : 결측치에 NaN 대신 빈 칸으로 남기고 싶다면 False로 지정

dtype : 특정 column의 데이터 타입을 지정해주고 싶다면 열 이름 : 타입의 딕셔너리로 지정

 

 

csv 파일 내보내기 함수 : to_csv

작업이 완료된 데이터프레임을 csv 파일로 저장하고 싶은 경우

to_csv 함수를 사용해주시면 됩니다.

 

데이터프레임.to_csv(디렉토리) 형태로 간단하게 지정해주시면 저장이 완료됩니다.

# 데이터프레임 변수.to_csv(저장할 디렉토리)
df.to_csv('student_2.csv')