๐ง ์๊ถ ๋ฐ์ดํฐ์ ๋์ค๊ตํต ์นํ์ฐจ ๋ฐ์ดํฐ ํฉ์น๊ธฐ
์ฐ๋๋ง๋ค ๋ฒ์ค ์นํ์ฐจ/์งํ์ฒ ์นํ์ฐจ ์ ๋ณด๊ฐ ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ด 2020~2022๋ 3๊ฐ๋ ์ ๊ฐ๊ฐ ๋ฐ๋ก ์์ ํ์๋ค.
์์๋ก, 2022๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒด ํตํฉํ๋ ๊ณผ์ ์ ํฌ์คํ ํ๋ค.
๐ ์๊ถ ์์ญ ๋ด ๋ฒ์ค์ ๋ฅ์ฅ/์งํ์ฒ ์ญ๋ค ํ์ธ
- ๋จผ์ , ์๊ถ๋ณ ์์ญ ๋ด์ ํฌํจ๋ ๋ฒ์ค์ ๋ฅ์ฅ/์งํ์ฒ ์ญ ์์ ๊ฐ ์์ญ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ๋ฒ์ค์ ๋ฅ์ฅ๊ณผ ์งํ์ฒ ์ญ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. (ํ์๋ถ์ด ์์ ํด์ฃผ์ฌ!)
- ๋ฐ์ดํฐ๋ช : ALL_filter22
๐ ์ฐ๋, ๋ถ๊ธฐ, ์๊ถ ์ฝ๋ ๊ธฐ์ค์ผ๋ก ๋ฒ์ค ์นํ์ฐจ ์น๊ฐ์ & ์งํ์ฒ ์นํ์ฐจ ์น๊ฐ์๋ฅผ ์๊ฐ๋๋ณ๋ก ํฉํ๊ธฐ
โก ๊ด๋ จ์๋ ๋ฐ์ดํฐ ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
- ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐ์ดํฐํ๋ ์์ ์๋ฃ๋ฅผ ๊ฐ์ ธ์ ํฉ์น๋ ๊ฒ์ด ํ์ํ๋ค.
- ์์ ์๋ฃ์์ ์๊ถ_์ฝ๋๋ณ๋ก ์ด๋ค ๋ฒ์ค์ ๋ฅ์ฅ๊ณผ ์งํ์ฒ ์ญ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ผ๋,
- ์ฐ๋, ๋ถ๊ธฐ๋ณ๋ก ํด๋น ์๊ถ ๋ด์ ๊ฐ ๋ฒ์ค์ ๋ฅ์ฅ๊ณผ ์งํ์ฒ ์ญ์ ์ด์ฉํ ์นํ์ฐจ ์น๊ฐ์๋ฅผ ์๊ฐ๋๋ณ๋ก ๋ํ๋ด์ผํ๋ค.
- ์ด๋ฅผ ์ํด ๋ ๊ฐ ์๋ฃ ๋ฒ์ค ์นํ์ฐจ ๋ฐ์ดํฐ / ์งํ์ฒ ์นํ์ฐจ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ๊ฐ๊ณตํ๋ค.
- ๋ฒ์ค ์นํ์ฐจ ๋ฐ์ดํฐ์ ์งํ์ฒ ์นํ์ฐจ ๋ฐ์ดํฐ๋ ์ฐ๋๋ณ๋ก ๋๋์ด ์งํ
- ๋ฒ์ค ์นํ์ฐจ ๋ฐ์ดํฐ
- bus22
- ์งํ์ฒ ์นํ์ฐจ ๋ฐ์ดํฐ
- sub22
- ์ต์ข ์ ์ผ๋ก ๋ณํฉํด์ผํ๋ ์๊ถ ๋ฐ์ดํฐ
โก ์ฐ๋/๋ถ๊ธฐ/์๊ถ์ฝ๋ ๋ณ ํฌํจ๋ ๋ฒ์ค์ ๋ฅ์ฅ ์ฌ์ ๋ ฌ
bus_temp = []
# ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์ ๋ณด ์ถ์ถ
for index, row in ALL_filter22.iterrows():
์ฐ๋ = row['์ฐ๋']
๋ถ๊ธฐ = row['๋ถ๊ธฐ']
์๊ถ์ฝ๋ = row['์๊ถ_์ฝ๋']
๋ฒ์ค์ ๋ฅ์ฅ๋ค = row['๋ฒ์ค์ ๋ฅ์ฅ๋ค']
# ๊ฐ ๋ฒ์ค ์ ๋ฅ์ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ํ์ ์์ฑํ๊ณ ๋ฆฌ์คํธ์ ์ถ๊ฐ
for ์ ๋ฅ์ฅ in ๋ฒ์ค์ ๋ฅ์ฅ๋ค:
new_row = {'์ฐ๋': ์ฐ๋, '๋ถ๊ธฐ': ๋ถ๊ธฐ, '์๊ถ_์ฝ๋': ์๊ถ์ฝ๋, '๋ฒ์ค์ ๋ฅ์ฅ': ์ ๋ฅ์ฅ}
bus_temp.append(new_row)
# ์๋ก์ด ๋ฐ์ดํฐํ๋ ์ ์์ฑ
bus_temp = pd.DataFrame(bus_temp)
# ๊ฒฐ๊ณผ ํ์ธ
bus_temp = bus_temp.drop_duplicates()
expanded_bus22 = bus_temp
expanded_bus22
โก ์ฐ๋/๋ถ๊ธฐ/์๊ถ์ฝ๋ ๋ณ ํฌํจ๋ ์งํ์ฒ ์ญ ์ฌ์ ๋ ฌ
new_data = []
for index, row in ALL_filter22.iterrows():
์ฐ๋ = row['์ฐ๋']
๋ถ๊ธฐ = row['๋ถ๊ธฐ']
์๊ถ์ฝ๋ = row['์๊ถ_์ฝ๋']
์งํ์ฒ ์ญ๋ค = row['์งํ์ฒ ์ญ๋ค']
# ๊ฐ ์งํ์ฒ ์ญ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ํ์ ์์ฑํ๊ณ ๋ฆฌ์คํธ์ ์ถ๊ฐ
for ์ญ in ์งํ์ฒ ์ญ๋ค:
new_row = {'์ฐ๋': ์ฐ๋, '๋ถ๊ธฐ': ๋ถ๊ธฐ, '์๊ถ_์ฝ๋': ์๊ถ์ฝ๋, '์งํ์ฒ ์ญ': ์ญ}
new_data.append(new_row)
new_df = pd.DataFrame(new_data)
new_df = new_df.drop_duplicates()
expanded_sub22 = new_df
expanded_sub22
โก expanded ๋ฐ์ดํฐ์ ์๊ฐ๋๋ณ ์นํ์ฐจ ์น๊ฐ์ ๋ฐ์ดํฐ ๋งคํ
bus_merged22 = pd.merge(expanded_bus22, bus22, how='left', on=['์ฐ๋', '๋ถ๊ธฐ', '๋ฒ์ค์ ๋ฅ์ฅ'])
bus_merged22 = bus_merged22.fillna(0)
bus_merged22[['00~06_์นํ์ฐจ_์น๊ฐ์', '06~11_์นํ์ฐจ_์น๊ฐ์','11~14_์นํ์ฐจ_์น๊ฐ์', '14~17_์นํ์ฐจ_์น๊ฐ์', '17~21_์นํ์ฐจ_์น๊ฐ์','21~24_์นํ์ฐจ_์น๊ฐ์']] \
= bus_merged22[['00~06_์นํ์ฐจ_์น๊ฐ์', '06~11_์นํ์ฐจ_์น๊ฐ์','11~14_์นํ์ฐจ_์น๊ฐ์', '14~17_์นํ์ฐจ_์น๊ฐ์', '17~21_์นํ์ฐจ_์น๊ฐ์','21~24_์นํ์ฐจ_์น๊ฐ์']].astype(int)
bus_merged22 = bus_merged22.rename(columns = {
'00~06_์นํ์ฐจ_์น๊ฐ์': '00~06์_๋ฒ์ค',
'06~11_์นํ์ฐจ_์น๊ฐ์': '06~11์_๋ฒ์ค',
'11~14_์นํ์ฐจ_์น๊ฐ์': '11~14์_๋ฒ์ค',
'14~17_์นํ์ฐจ_์น๊ฐ์': '14~17์_๋ฒ์ค',
'17~21_์นํ์ฐจ_์น๊ฐ์': '17~21์_๋ฒ์ค',
'21~24_์นํ์ฐจ_์น๊ฐ์': '21~24์_๋ฒ์ค',
})
bus_merged22
sub_merged22 = sub_merged22.groupby(['์ฐ๋', '๋ถ๊ธฐ', '์๊ถ_์ฝ๋']).sum()
# sub_merged22 = sub_merged22.drop(columns = '์งํ์ฒ ์ญ')
sub_merged22 = sub_merged22.reset_index()
sub_merged22 = sub_merged22.rename(columns = {
'00-06์': '00~06์_์งํ์ฒ ',
'06-11์': '06~11์_์งํ์ฒ ',
'11-14์': '11~14์_์งํ์ฒ ',
'14-17์': '14~17์_์งํ์ฒ ',
'17-21์': '17~21์_์งํ์ฒ ',
'21-24์': '21~24์_์งํ์ฒ '
})
sub_merged22
โก 2022๋ ์ฐ๋/๋ถ๊ธฐ/์๊ถ์ฝ๋/์๊ฐ๋๋ณ ๋ฒ์ค ์นํ์ฐจ ์น๊ฐ ์ + ์งํ์ฒ ์นํ์ฐจ ์น๊ฐ ์ ํฉ์น๊ธฐ
- ์ฐ๋, ๋ถ๊ธฐ, ์๊ถ ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก left join ์ ํ๊ณ , ๊ฒฐ์ธก์น๋ 0์ผ๋ก ์ฒ๋ฆฌ
โก ์๊ถ ๋ฐ์ดํฐํ๋ ์์ ๋์ค๊ตํต ๋ฐ์ดํฐ ํตํฉ
- ๋ค์์ผ๋ก, ์ต์ข ์๊ถ๋ฐ์ดํฐ ํ๋ ์(df22)์ ์ด๋ฅผ ํตํฉํด์ผํจ
- ์ฐจ๋ก๋ก ๋ฒ์ค๋ฐ์ดํฐ์ ์งํ์ฒ ๋ฐ์ดํฐ๋ฅผ ํฉ์น๊ธฐ
- ๊ฒฐ์ธก์น๋ 0์ผ๋ก ์ผ๊ด ์ฒ๋ฆฌ
merged22_bus= pd.merge(df22, bus_merged22, on=['์ฐ๋', '๋ถ๊ธฐ', '์๊ถ_์ฝ๋'], how = 'left')
merged22_bus_sub = pd.merge(merged22_bus, sub_merged22, on=['์ฐ๋', '๋ถ๊ธฐ', '์๊ถ_์ฝ๋'], how = 'left')
merged22_bus_sub = merged22_bus_sub.fillna(0)
merged22_bus_sub
๐ ์๊ถ ๋ฐ์ดํฐํ๋ ์์ ๋์ค๊ตํต ๋ฐ์ดํฐ ํตํฉ
- ALL_filter22์ ์๋ ์๊ถ๋ณ ์งํ์ฒ ์ญ ์, ๋ฒ์ค์ ๋ฅ์ฅ ์ ๋ถ๋ฌ์์ ํฉ์น๊ธฐ
- ๋ถํ์ํ ์ปฌ๋ผ์ ์ญ์
final_2022 = pd.merge(merged22_bus_sub, ALL_filter22, on=['์ฐ๋', '๋ถ๊ธฐ', '์๊ถ_์ฝ๋'], how = 'left')
final_2022 = final_2022.drop(columns = ['๋ฒ์ค์ ๋ฅ์ฅ๋ค', '์งํ์ฒ ์ญ๋ค', 'ํด๋ฆฌ๊ณค_์ขํ_x', 'ํด๋ฆฌ๊ณค_์ขํ_y'])
๋์ผํ ๊ณผ์ ์ 2020, 2021, 2022๋ ๋ฐ์ดํฐ์ ๋ํด 3๋ฒ ๋ฐ๋ณตํ๊ณ , ์ด๋ฅผ ํตํฉํ์ฌ ์ต์ข ๋์ค๊ตํต+์๊ถ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ฐํ
์ด๋ก์จ ์๊ถ๋ฐ์ดํฐํ๊ณผ ์์ ํ ์ต์ข ์ ์ธ ๋์ค๊ตํต(๋ฒ์ค, ์งํ์ฒ ) ๋ฐ์ดํฐ ํตํฉ์ด ์๋ฃ๋์๋ค!
728x90