πŸ† λ―Έκ΅­ μ§ˆλ³‘ 관리청(CDC) μ—μ„œ μ œκ³΅ν•˜λŠ” μΆœμƒ 인ꡬ 수λ₯Ό 가지고 데이터 뢄석을 진행해 보자.

πŸ† 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” pd . to_datetime( ) ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 법과 쀑간 λΆ€λΆ„μ˜ 데이터λ₯Ό μŠ¬λΌμ΄μ‹± ν•˜λŠ” 법을 μ€‘μ μœΌλ‘œ μ§„ν–‰ν•œλ‹€.


1. 데이터 뢈러였기

import pandas as pd
birth = pd.read_csv("Data/births.csv", encoding = 'utf-8-sig')
birth.head()
>>
	year	month	day	    gender	births
0	1969	1	    1.0	    F	    4046
1	1969	1	    1.0	    M	    4440
2	1969	1	    2.0	    F	    4454
3	1969	1	    2.0	    M	    4548
4	1969	1	    3.0	    F	    4548

λ…„, μ›”, 일, 성별, μΆœμƒ 수의 데이터λ₯Ό κ°€μ§€λŠ” 것을 ν™•μΈν•˜μž.

2. 데이터 μ „μ²˜λ¦¬ν•˜κΈ°

birth.info()
>>
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 15547 entries, 0 to 15546
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   year    15547 non-null  int64  
 1   month   15547 non-null  int64  
 2   day     15067 non-null  float64
 3   gender  15547 non-null  object 
 4   births  15547 non-null  int64  
dtypes: float64(1), int64(3), object(1)
memory usage: 607.4+ KB

μœ„μ˜ info( ) ν•¨μˆ˜ 좜λ ₯μœΌλ‘œλΆ€ν„° day에 λŒ€ν•œ 정보가 μ—†λŠ” 것을 확인할 수 μžˆλ‹€. μ–΄λŠ ꡬ간이 결츑치λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ .isnull( ) ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄λ³΄μž.

birth[birth['day'].isnull()]
>>

        year	month	day	    gender	births
15067	1989	1	    NaN	    F	    156749
15068	1989	1	    NaN	    M	    164052
15069	1989	2	    NaN	    F	    146710
15070	1989	2	    NaN	    M	    154047
15071	1989	3	    NaN	    F	    165889

...	...	...	...	...	 ...

15542	2008	10	    NaN	    M	    183219
15543	2008	11	    NaN	    F	    158939
15544	2008	11	    NaN	    M	    165468
15545	2008	12	    NaN	    F	    173215
15546	2008	12	    NaN	    M	    181235

480 rows Γ— 5 columns

μ΄λ ‡κ²Œ 1989 ~ 2008 기간은 day 에 λŒ€ν•œ 정보가 μ—†μŒμ„ 확인할 수 μžˆλ‹€. μ•žμœΌλ‘œ μžˆμ„ μ „μ²˜λ¦¬ 과정은 birth λ°μ΄ν„°ν”„λ ˆμž„μ„ 1989λ…„ 이전과 μ΄ν›„λ‘œ λ‚˜λˆ μ„œ 진행할 것이닀.

λ°μ΄ν„°ν”„λ ˆμž„μ„ λ‚˜λˆ„λŠ” 방법은 μ „ν˜€ 어렡지 μ•Šλ‹€. μ–΄μ°¨ν”Ό 인덱싱이 λ‹€ λ˜μ–΄ μžˆλŠ” μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 인덱슀둜 μŠ¬λΌμ΄μ‹± 을 ν•΄μ£Όλ©΄ λœλ‹€.

인덱슀 번호 15067이 1989λ…„λ„μ˜ 첫번째 데이터λ₯Ό μ˜λ―Έν•˜λ―€λ‘œ κ·Έ μ•žκΉŒμ§€ μŠ¬λΌμ΄μ‹±ν•˜λ©΄ 1988λ…„λ„κΉŒμ§€μ˜ 데이터λ₯Ό 얻을 수 μžˆλ‹€.

birth_til_1988 = birth[:15067]

이제 이 데이터λ₯Ό 남성과 μ—¬μ„±μœΌλ‘œ λ‚˜λˆ„λŠ” μ „μ²˜λ¦¬λ₯Ό μ§„ν–‰ν•œλ‹€.

πŸ† 1969 ~ 1988 μ—¬μ„± μΆœμƒ 데이터

birth_til_1988_F = birth_til_1988[birth_til_1988['gender'] == 'F'].copy()
birth_til_1988_F = birth_til_1988_F.groupby(by = ['year', 'month']).aggregate({'births' : 'sum'})
birth_til_1988_F = birth_til_1988_F.reset_index()
birth_til_1988_F.tail()
>>
    year	month	births
235	1988	8	    173088
236	1988	9	    169923
237	1988	10	    162361
238	1988	11	    153134
239	1988	12	    157444

πŸ† 1969 ~ 1988 남성 μΆœμƒ 데이터

birth_til_1988_M = birth_til_1988[birth_til_1988['gender'] == 'M'].copy()
birth_til_1988_M = birth_til_1988_M.groupby(by = ['year', 'month']).aggregate({'births' : 'sum'})
birth_til_1988_M = birth_til_1988_M.reset_index()
birth_til_1988_M.tail()
>>
    year	month	births
235	1988	8	    181511
236	1988	9	    177354
237	1988	10	    169272
238	1988	11	    161532
239	1988	12	    164883

πŸ† 1989 ~ 2008 μ—¬μ„± μΆœμƒ 데이터

birth_after_1989 = birth[15067:]
birth_after_1989_F = birth_after_1989[birth_after_1989['gender']=="F"].copy()
birth_after_1989_F = birth_after_1989_F[['year','month','births']].copy()
birth_after_1989_F.head()
>>
        year	month	births
15067	1989	1	    156749
15069	1989	2	    146710
15071	1989	3	    165889
15073	1989	4	    155689
15075	1989	5	    163800

πŸ† 1989 ~ 2008 남성 μΆœμƒ 데이터

birth_after_1989_M = birth_after_1989[birth_after_1989['gender']=="M"].copy()
birth_after_1989_M = birth_after_1989_M[['year','month','births']].copy()
birth_after_1989_M.head()
>>
        year	month	births
15068	1989	1	    164052
15070	1989	2	    154047
15072	1989	3	    174433
15074	1989	4	    163432
15076	1989	5	    172892

λ§ˆμ§€λ§‰μœΌλ‘œ 성별끼리 λ°μ΄ν„°ν”„λ ˆμž„μ„ ν•©μ³μ£Όμž.

birth_F = pd.concat([birth_til_1988_F, birth_after_1989_F])
birth_M = pd.concat([birth_til_1988_M, birth_after_1989_M])

πŸ† μœ„μ˜ 과정을 ν†΅ν•΄μ„œ μ›ν•˜λŠ” ν˜•νƒœμ˜ 데이터λ₯Ό λ§Œλ“œλŠ” 데에 μ„±κ³΅ν–ˆλ‹€. λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œλŠ” 이λ₯Ό λ°”νƒ•μœΌλ‘œ μ•„λž˜μ˜ 데이터뢄석 μž‘μ—…μ„ 진행해 보자😊.

  • 연도별 남성 / μ—¬μ„± μΆœμƒ 수 비ꡐ
  • μš”μΌλ³„ μΆœμƒ 좔이 확인
  • 1969λ…„ 일별 μΆœμƒ 좔이 νŒŒμ•…
  • 뢄기별 μΆœμƒ 좔이 (1969 ~ 2008)

πŸ’‘νŒŒμ΄μ¬ 데이터 μ‚¬μ΄μ–ΈμŠ€ ν•Έλ“œλΆ(μœ„ν‚€λΆμŠ€,2020)의 μ €μž Jake VanderPlas λΆ„μ˜ κΉƒν—ˆλΈŒμ—μ„œ 데이터λ₯Ό κ°€μ Έμ™”μŒμ„ λ°νž™λ‹ˆλ‹€.

Leave a comment