데이터 처리
열의 자료형을 바꾸거나 새로운 열을 추가하는 방법을 알아보자.
print(scientists['Born'].dtype)
print(scientists['Died'].dtype)
날짜를 문자열로 저장한 데이터는 시간 관련 작업을 할 수 있도록 datetime 자료형으로 바꾸는 것이 좋다.
born_datetime = pd.to_datetime(scientists['Born'], format='%Y-%m-%d')
print(born_datetime)
died_datetime = pd.to_datetime(scientists['Died'], format='%Y-%m-%d')
print(died_datetime)
이제 추가를 해보자.
scientists['born_dt'], scientists['died_dt'] = (born_datetime, died_datetime)
print(scientists.head())
기존의 열에 2개의 열이 추가되었다.
새로운 열을 하나 더 추가해보자.
scientists['age_days_dt'] = (scientists['died_dt'] - scientists['born_dt'])
print(scientists)
얼마 동안 살았는지 계산하여 새로운 열을 추가해봤다.
Age열의 데이터 섞기
import random
random.seed(42)
random.shuffle(scientists['Age'])
print(scientists['Age'])
데이터프레임 열 삭제
print(scientists.columns)
print()
scientists_dropped = scientists.drop(['Age'], axis=1)
print(scientists_dropped.columns)
데이터 저장하고 불러오기
데이터를 저장하는 방법은 다양하다.
피클, CSV, TSV 파일로 저장하고 다시 불러올 수 있다.
피클로 저장
피클은 데이터를 바이너리 형태로 직렬화한 오브젝트를 저장하는 방법이다.
피클로 저장하면 스프레드시트보다 더 작은 용량으로 데이터를 저장할 수 있어서 편리하다.
시리즈를 피클로 저장하려면 to_pickle 메서드를 사용하면 된다.
names = scientists['Name']
names.to_pickle('../output/scientists_names_series.pickle')
scientists.to_pickle('../output/scientists_df.pickle')
데이터프레임도 피클로 저장할 수 있다.
피클은 바이너리 형태의 오브젝트이기 때문에 저장된 피클 데이터를 편집기와 같은 프로그램에서 열어보면 이상한 문자가 나타난다. 피클 데이터는 반드시 read_pickle 메서드로 읽어야 한다.
scientists_names_from_pickle = pd.read_pickle('../output/scientists_names_series.pickle')
print(scientists_names_from_pickle)
print()
scientists_from_pickle = pd.read_pickle('../output/scientists_df.pickle')
print(scientists_from_pickle)
CSV 파일과 TSV 파일로 저장
CSV 파일은 데이터를 쉼표로 구분하여 저장한 파일이고 TSV 파인은 데이터를 탭으로 구분하여 저장한 파일이다.
to_csv 메서드로 시리즈와 데이터프레임을 CSV 파일로 저장할 수 있다. sep 인자를 추가하여 '\t'를 지정하고 파일의 확장자를 '.tsv'로 지정하면 TSV 파일로 저장할 수 있다.
names.to_csv('../output/scientists_names_series.csv')
scientists.to_csv('../output/scientists_df.tsv', sep='\t')
시리즈는 엑셀 구조와 맞지 않기 때문에 엑셀 파일로 저장할 수 없다.
엑셀 파일로 저장할 수 있는 데이터프레임으로 변환해야 한다. 데이터프레임은 엑셀 파일로 바로 저장할 수 있다.
단, xls파일로 저장하려면 xlwt 라이브러리가 필요하고, xlsx 파일로 저장하려면 openpyxl 라이브러리가 필요하다.
아나콘다 프롬프트에 입력하여 설치하자.
names_df = names.to_frame()
import xlwt
import openpyxl
names_df.to_excel('../output/scientists_name_series_df.xls')
names_df.to_excel('../output/scientists_names_series_df.xlsx')