Link Search Menu Expand Document

데이터 입출력

판다스에서는 다양한 형식의 외부 파일을 읽어와 데이터프레임으로 변환하는 함수를 제공한다. 외부 파일을 데이터프레임으로 변환하면 판다스의 모든 기능을 사용할 수 있다. 반대로 데이터프레임을 여러 형식의 파일로 저장할 수도 있다.
아래 표는 판다스에서 제공하는 입출력 도구이다.

FileFormatReaderWriter
CSVread_csvto_csv
JSONread_jsonto_json
HTMLread_htmlto_html
Local clipboardread_clipboardto_clipboard
MS Excelread_excelto_excel
HDF5 Formatread_hdfto_hdf
SQLread_sqlto_sql

(마음 같아선 데이터셋이랑 결과랑 촥 예쁘게 하고싶은데, 하 너무 힘들다. 최대한 내 말로 푸는 데에 집중하겠삼)

CSV

csv 파일은 데이터 값의 열을 쉼표로 구분하고 줄바꿈으로 행을 구분한다.

CSV 파일 -> 데이터프레임 : read_csv

pandas.read_csv("파일 경로")

header 옵션은 데이터프레임의 열 이름으로 사용할 행을 지정한다.

# 데이터 중 '열 이름'이 되는 행이 없음
pandas.read_csv("파일경로", header=None)

# 1번째 행을 '열 이름'으로 지정 (0번째 행은 사라짐)
pandas.read_csv("파일경로", header=1)

index_col 옵션은 데이터프레임의 행 인덱스가 되는 열을 지정한다.

# 인덱스 지정하지 않음 (= default)
pandas.read_csv("파일경로", index_col=None)

# "c0"열을 행 인덱스로 지정
pandas.read_csv("파일경로", index_col="c0")

csv파일에 따라 쉼표 대신 탭이나 공백으로 텍스트를 구분하기도 한다. 이때 구분자 옵션(sep 또는 delimiter)을 변경해야 한다.
이 외에도 names(열 이름으로 사용할 문자열 리스트), skiprows(처음 몇 줄을 건너 뛸건지 설정, 행 번호 담긴 리스트로 설정 가능) 등의 옵션들이 있다.

데이터프레임 -> CSV 파일 : to_csv

df.to_csv("파일 이름(경로)")

JSON

json파일은 데이터 공유 목적으로 개발된 특수한 파일 형식이다. 파이썬 딕셔너리와 유사한 ‘key : value’ 구조를 갖는다.

JSON 파일 -> 데이터프레임 : read_json

pandas.read_json("파일 경로")

데이터프레임 -> JSON 파일 : to_json

df.to_json("파일 이름(경로)")

Excel

excel파일의 행과 열은 데이터프레임의 행, 열로 일대일 대응된다.

Excel 파일 -> 데이터프레임 : read_excel

read_excel() 함수 사용법은 read_csv() 함수와 비슷하다. header, indec_col 등 대부분의 옵션을 그대로 사용할 수 있다.

pandas.read_excel("파일 경로")
pandas.read_excel("파일 경로", header=None)

데이터프레임 -> Excel 파일 : to_excel

to_excel() 함수를 사용하려면 openpyxl 라이브러리를 설치해야한다.

df.to_excel("파일 이름(경로)")

여러 개의 데이터프레임을 하나의 Excel 파일로 저장할 수도 있다.
판다스 ExcelWriter() 함수는 Excel 워크북 객체(Excel파일)를 생성한다. 데이터프레임에 to_excel() 함수를 적용할 때 삽입하려는 워크북 객체(Excel파일)를 인자로 전달한다. sheet_name 옵션에 Excel 파일의 시트 이름을 입력하면 삽입되는 시트 위치를 지정할 수 있다. 시트 이름을 다르게 설정하면, 같은 Excel 파일의 서로 다른 시트에 여러 데이터프레임이 구분하여 저장된다.

df1 = pandas.DataFrame(data)
df2 = pandas.DataFrame(data)
# data 및 과정 생략
writer = pandas.ExcelWriter("excel 파일 경로")
df1.to_excel(writer, sheet_name="sheet1")
df2.to_excel(writer, sheet_name="sheet2")
writer.save()

Web에서 데이터 수집하기

HTML 웹 페이지에서 표 속성 가져오기

read_html() 함수는 html 웹 페이지에 있는 <table> 태그에서 표 형식의 데이터를 모두 찾아 데이터프레임으로 변환한다. 표 데이터들은 각각 별도의 데이터프레임으로 변환되기 때문에 여러 개의 데이터프레임을 원소로 갖는 리스트가 반환된다.

pandas.read_html("url 또는 html 파일 경로")

웹 스크래핑, 데이터베이스 가져오기

BeautifulSoup 등 웹 스크래핑 도구로 수집한 데이터를 파이썬 리스트, 딕셔너리 등으로 정리한 뒤 DataFrame() 함수에 전달하여 데이터프레임으로 변환한다.

데이터베이스에서 판다스 데이터프레임으로 변환은 read_sql() 함수를 이용하면 가능하다. 읽어온 데이터는 데이터프레임 포맷으로 저장된다.

API 활용

대부분의 API는 csv, json, xml 등 판다스에서 쉽게 읽어올 수 있는 파일 형식을 지원한다. 따라서 API를 통해 가져온 데이터를 손쉽게 데이터프레임으로 변환할 수 있다.