데이터 프레임 개요
데이터 프레임 생성, 저장, 그리고 읽어오기
import pandas as pd
pd.DataFrame(data [, index=None, columns=None])
# 데이터프레임을 만드는 방법은 여러가지가 있다.
# 데이터프레임을 딕셔너리로 만들어보기
data = {
'id':['id-1', 'id-2', 'id-3', 'id-4', 'id-5'],
'korean':[100,50,70,60,90],
'english':[90,80,100,50,100]
}
grade = pd.DataFrame(data)
grade
# 넘파이 2차원 배열로 만들어보기
data2 = np.arange(12).reshape(4,3)
arr_df = pd.DataFrame(data2)
arr_df
# 컬럼 이름, 인덱스 이름을 지정하지 않았기 때문에 자동으로 붙여줌.
# 인덱스 이름 지정해주기
arr_df = pd.DataFrame(data2, index=['가','나','다','라'], columns=['A','B','C'])
arr_df
DataFrame객체.to_파일타입(파일경로,sep=',', index=True, header=True, encoding)
DataFrame객체.to_csv()
DataFrame객체.to_excel(파일경로, index=True, header=True)
DataFrame객체.to_pickle()
# 인덱스나 헤더가 순번이라면 굳이 저장할 필요 없다.
# 명시적으로 준 인덱스나 헤더라면 저장하는 것이 좋다.
# 나중에 인덱스로 바꿔주는 메서드가 있음.
# 파일로 저장해보자
# csv
grade.to_csv('./data/grade.csv') # 저장할 경로를 지정할 때 역슬러쉬 쓸 때는 두 개씩 써준다.
# 인덱스 없이 저장하기
grade.to_csv('./data/grade2.csv', index=False)
# 순번이라면, 자동증가값이라면, 인덱스 없이 저장하는 게 좋다.
# 저장하지 않는 경우가 많다.
# 헤더 없이 저장하기
grade.to_csv('./data/grade3.csv', index=False, header=False)
# 하지만 내가 지정해 준 값이라면 저장해주는 게 좋다.
# 일반적으로 헤더는 많이 저장한다.
# 인코딩 지정하기.
grade.to_csv('./data/grade.csv', encoding='UTF-8')
grade.to_csv('./data/grade2.csv', index=False, encoding='UTF-8')
grade.to_csv('./data/grade3.csv', index=False, header=False, encoding='UTF-8')
# 명시해주는 것이 좋다.
# 읽어들일 때도 인코딩을 지정해서 읽어줘야 한다.
# 엑셀로 저장하기
grade.to_excel('./data/grade.xlsx', index=False)
# 피클로 저장하기
grade.to_pickle('./data/grade.pkl')
# 피클은 그 형태 그대로 저장하고 그대로 불러오기 때문에 인덱스를 없애주지 않아도 된다.
# HTML로 저장하기
grade.to_html('./data/grade.html')
# html로 저장될 때는 테이블 태그로 저장된다.
# html로 저장할 일은 거의 없다.
# csv, 엑셀, 피클로 많이 저장한다.
pd.read_csv(파일경로, sep=',', header, index_col, na_values, encoding)
# csv 파일 읽어오기
grade_df1 = pd.read_csv('data/grade.csv', encoding='UTF-8')
grade_df1
# 불러올 때 자동으로 인덱스가 붙는다.
# 인덱스로 쓸 때, 인덱스를 지정해줄 때
grade_df1 = pd.read_csv('data/grade.csv', index_col=0, encoding='UTF-8')
grade_df1
# 0번 컬럼이 인덱스가 된다.
# 인덱스 없이 저장한 파일 불러오기
grade_df2 = pd.read_csv('data/grade2.csv', encoding='UTF-8')
grade_df2
# 아이디를 인덱스로
# grade_df2 = pd.read_csv('data/grade2.csv', index_col=0, encoding='UTF-8')
grade_df2 = pd.read_csv('data/grade2.csv', index_col='id', encoding='UTF-8')
# 컬럼 이름으로 지정해줄 수도 있음
# 헤더 없는 파일 읽어오기
grade_df3 = pd.read_csv('data/grade3.csv', encoding='UTF-8')
grade_df3
# 1번 행이 헤더로 지정됨
# 헤더없다고 알려주기
grade_df3 = pd.read_csv('data/grade3.csv', header=None, encoding='UTF-8')
grade_df3
# 엑셀파일 읽어오기
grade_df4 = pd.read_excel('data/grade.xlsx')
grade_df4
# 피클 불러오기
grade_df5 = pd.read_pickle('data/grade.pkl')
grade_df5
# 따로 인덱스가 붙지 않음. 그대로 불러옴
# html 읽어오기
# 리턴타입 : List
# 테이블이 있다면 URL을 지정해줄 수도 있음
# (URL의 HTML에 있는 모든 테이블을 다 가져와서 DataFrame 리스트로 반환.)
table = pd.read_html('data/grade.html')
table[0]