1005 복습
1
>>> import pydataset
>>> computers = pydataset.data("Computers")
computers
#pivot table 을 사용하여 'screen'과 'ram'에 따른 'price'의 최대값, 최소값, 평균값
>>> computers.pivot_table(index = 'ram', columns = 'screen',
values = 'price', aggfunc = ['max', 'min', 'mean'])
2
>>> from datetime import datetime
>>> import pandas as pd
>>> import numpy as np
#2000년 1월 1일 부터 현재까지 일(d) 단위로
>>> dt = pd.date_range(start = '1/1/2000', end = datetime.now(), freq = 'd')
np.random.seed(1234)
s = pd.Series(index = dt, data = np.random.randn(8315))
s
#2001년 1월 1일 부터 2010년 12월 31일까지 각 열의 합 더하기
>>> s['2001/01' : '2010/12'].sum()
3
>>> df = pd.DataFrame({0 : ['아', '야', '어', '여'],
1 : ['안녕$하세요', '반a갑a습니다', '오5랜만10000입니다', '다음에:뵈요']})
df
>>> df.iloc[: , 1]
>>> df[1]
#한글만 보이게
>>> df.iloc[: , 1].str.replace("[^가-힣]", "")
#pandas 객체에 딕셔너리를 적용시커 데이터에 매핑시키려면 -> map
>>> df
>>> d = {"아" : "a", "야" : "b", "어" : "c", "여" : "d"}
>>> df.iloc[:, 0].map(d)
4
#mpg 데이터에서 제조사와 모델별 cty와 hwy의 최소, 최대값과 displ의 평균 -> pivot_table을 이용해
>>> mpg = pydataset.data('mpg')
mpg.head()
>>> mpg.pivot_table(values = ['cty', 'hwy', 'displ'],
index = ['manufacturer', 'model'],
aggfunc = {'cty' : ['min', 'max'], 'hwy' : ['min', 'max'], 'displ' : 'mean'})
(3) 신생아 이름
>>> names1880 = pd.read_csv('https://raw.githubusercontent.com/wesm/pydata-book/3rd-edition/datasets/babynames/yob1880.txt',
names=['name', 'sex', 'births'])
names1880
#성별별 출생수를 모두 합한 값을 해당 연도의 전체 출생수라고 가정
>>> names1880['births'].sum()
>>> names1880.groupby('sex')[['births']].sum()
#연도별 파일로 나눠져 있는 자료를 DataFrame 하나로 모으고, 'year' 항목 추가
>>> import os
os.getcwd()
>>> pd.read_csv("yob1880.txt")
#테스트
>>> #years = range(1880, 2011)
#df = []
columns = ['name', 'gender', 'births']
years = range(1880, 1882)
df = pd.DataFrame()
for year in years :
frame = pd.read_csv(f"yob{year}.txt", names = columns)
#frame = pd.read_csv("yob{}.txt".fomat(year))
#frame = pd.read_csv("yob%d.txt".%year)
frame['year'] = year
df = pd.concat([df, frame])
df
>>> years = range(1880, 2011)
columns = ['name', 'gender', 'births']
#years = range(1880, 1882)
df = pd.DataFrame()
for year in years :
frame = pd.read_csv(f"yob{year}.txt", names = columns)
#frame = pd.read_csv("yob{}.txt".fomat(year))
#frame = pd.read_csv("yob%d.txt".%year)
frame['year'] = year
df = pd.concat([df, frame], ignore_index = True)
df
>>> names = df.set_index('name').reset_index()
names[:4]
>>> total_births = names.pivot_table('births', index = 'year', columns = 'gender', aggfunc = sum)
total_births[:3]
>>> total_births.plot(kind = 'line')
>>> t1 = total_births.reset_index().melt(id_vars = 'year', value_vars = ['F', 'M'])
t1
>>> import seaborn as sns
>>> sns.lineplot(data = t1, x = 'year', y = 'value', hue = 'gender')