본문 바로가기

Pandas

Csv, 엑셀, Json, Html 파일에서 읽기


import pandas as pd
import numpy as np
import seaborn as sns
import ssl
ssl._create_default_https_context = ssl._create_unverified_context


#### CSV 읽기

fp = '/Users/pandas_sample/part2/read_csv_sample.csv'
df1 = pd.read_csv(fp)
print(df1, '\n')

# 첫 줄을 헤더로 취급하지 않는다
df2 = pd.read_csv(fp, header=None)
print(df2, '\n')

# index 컬럼을 지정하지 않았다.
df3 = pd.read_csv(fp, index_col=None)
print(df3, '\n')

# co컬럼을 index로 지정하기
df4 = pd.read_csv(fp, index_col='c0')
print(df4, '\n')

CSV 파일 포맷에서 읽어서 데이터프레임에 담는 예제이다. 앞으로 대부분은 이 코드를 사용하게 될 것 같다. 

 

#### 엑셀 읽기

fp = '/Users/pandas_sample/part2/남북한발전전력량.xlsx'
df1 = pd.read_excel(fp)
df2 = pd.read_excel(fp, header=None)

print(df1, '\n')
print(df2, '\n')


#### Json 읽기

fp = '/Users/pandas_sample/part2/read_json_sample.json'
df1 = pd.read_json(fp)
print(df1, '\n')
print(df1.index, '\n')

#### Html 읽기

url = '/Users/pandas_sample/part2/sample.html'

tables = pd.read_html(url)
print(len(tables), '\n')

for i in range(len(tables)):
    print("tables[%s]" %i)
    print(tables[i], '\n')

df = tables[1]
df.set_index(['name'], inplace=True)
print(df)

 

엑셀파일에서 자료를 읽을일은 거의 없을 것 같다. Json은 종종 사용되는데 주로 API 리턴 포맷이 Json이거나, 데이터베이스 또는 하둡 필드의 타입이 Json일 경우도 있어서 종종 사용하게 될 것이다. html 파일 또는 URL에서 테이블 형태를 파싱해서 데이터프레임으로 변환하는 건 자주는 아니지만 써먹을일이 가끔 있을 것 같다. 


Where there is a will there is a way