221006 Day29

유예지·2022년 10월 6일

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')

0개의 댓글