์ง์ง,,,3๋ฒ๊ณผ์ ํ๋ฉด์ ๋๊ฐ๋ฆฌ ๊นจ์ก๋ค ์ง์ฌ,,,ํ....
๊ทธ๋ ์ง๋ง ๋๊นจํ ๊ฐ๋ณด์๊ณ ....
3. Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฐ์ดํฐ ๋ถ์ํ๊ธฐ
๊ณผ์ ๋ด์ฉ:
ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์ฃผ์ด์ง ๋ฐ์ดํฐ(.xlsx) ๋ถ์ํ๊ธฐ!
Q. Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์
ํ์ผ์ ๋ถ๋ฌ์ค๊ณ , DataFrame์ ์ถ๋ ฅํด์ฃผ์ธ์.
A.
Q. ๊ฐ ๊ฒฝ์ฐฐ์๋ฅผ ํด๋น ๊ตฌ ์ด๋ฆ์ผ๋ก ๋งคํํ์ฌ '๊ตฌ๋ณ' ์ด๋ผ๋ ์๋ก์ด column์ ์์ฑํ๊ณ , DataFrame์ ์ถ๋ ฅํด์ฃผ์ธ์.
A.
Q. pivot_table ์ ์ฌ์ฉํ์ฌ ๊ด์๋ณ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ณ ๋ฐ์ดํฐ๋ก ๋ณ๊ฒฝํ๊ณ , ๊ฐ์ ๊ตฌ์ ๊ฒฝ์ฐ์๋ sum์ ์ ์ฉํ์ฌ ๋ํด์ฃผ์ธ์. (index->๊ตฌ๋ณ)
A.
Q. ๊ตฌ ์์ ํ์ drop์ ํ์ฉํ์ฌ ์ญ์ ํด์ฃผ์ธ์.
A.
Q. ๊ฐ ๋ฒ์ฃ ๋ณ๋ก ๊ฒ๊ฑฐ์จ์ ๊ณ์ฐํ๊ณ , ๊ฐ ๊ฒ๊ฑฐ์จ ๋ฐ์ดํฐ column์ DataFrame์ ์ถ๊ฐํด์ฃผ์ธ์.
A.
Q. ํ์์๋ column์ del์ ์ฌ์ฉํ์ฌ ์ญ์ ํด์ฃผ์ธ์.
A.
Q. DataFrame์ ์ปฌ๋ผ๋ช
์ rename์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํด์ฃผ์ธ์.
A.
์ ์ด์ ์ด๋ป๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋์ง
์ฝ๋ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์๋ค,,
# ํ๋ค์ค ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
# ๋ถ๋ฌ์จ ์์
ํ์ผ์ ๋ฐํ์ผ๋ก DataFrame ์ถ๋ ฅํ๊ธฐ
data = {'๊ด์๋ช
':['์์ธ', '๋ถ์ฐ'], '์ด์ธ ๋ฐ์':[10, 8], '์ด์ธ ๊ฒ๊ฑฐ':[10, 8], '๊ฐ๋ ๋ฐ์':[20, 15], '๊ฐ๋ ๊ฒ๊ฑฐ':[19, 14], '๊ฐ๊ฐ ๋ฐ์':[30, 25], '๊ฐ๊ฐ ๊ฒ๊ฑฐ':[28, 23],
'์ ๋ ๋ฐ์':[40, 35], '์ ๋ ๊ฒ๊ฑฐ':[35, 30], 'ํญ๋ ฅ ๋ฐ์':[50, 45], 'ํญ๋ ฅ ๊ฒ๊ฑฐ':[48, 43]} # ๋์
๋๋ฆฌ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ data ๋ณ์์ ํ ๋นํด์ค
df = pd.DataFrame(data) # DataFrame ์ ์ฌ์ฉํ์ฌ ํด๋น ๋ณ์๋ก ๋ฐ์ดํฐํ๋ ์์ ์ถ๋ ฅํด์ค๋ค, ๋ฐ๋์ ๋์๋ฌธ์ ๊ตฌ๋ถํ ๊ฒ
df
์ฒซ๋ฒ์งธ ๋ฌธ์ ์ฝ๋์๋ค
import pandas as pd # ํ๋ค์ค ๋ถ๋ฌ์ค๊ธฐ
# ๊ทธ๋ฅ ๋ถ๋ฌ์ค๋ฉด ํ ๋ฐ์ดํฐ ์๋ต์ด ๋ง์์ ๋ชจ๋ ํ๊ณผ ์ด ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ๋์ค๋๋ก ํ๋ค์ค ์ค์ ๋ณ๊ฒฝํด์ฃผ๊ธฐ
pd.set_option('display.max_rows',None) # ๋ชจ๋ ํ ์ถ๋ ฅ
pd.set_option('display.max_columns', None) # ๋ชจ๋ ์ด ์ถ๋ ฅ
pd.set_option('display.max_colwidth', None) # ์ด ๋๋น ์ ํ ์์ ๊ธฐ
pd.set_option('display.width', None) # ์ค๋ฐ๊ฟ ์์ ๊ธฐ
# ์์
ํ์ผ ๋ค์ด๋ก๋ ํ, ๊ฒฝ๋ก ์ค์ ๊ณผ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
file_path = '/Users/leehyeon/Downloads/๊ด์๋ณ 5๋๋ฒ์ฃ ๋ฐ์ ๋ฐ ๊ฒ๊ฑฐ.xlsx'
df = pd.read_excel(file_path) # ์์ค์ฒ๋ผ ๋ฐ๋ก ๊ฒฝ๋ก ์ค์ ์์ด ๋ฐ๋ก ()์์ ํด๋น ๊ฒฝ๋ก๋ฅผ ์ ์ด์ค ์๋ ์์
# Series ๋ฅผ ํ์ฉํ์ฌ ๊ธฐ์กด DataFrame ์ column ์ถ๊ฐํ๊ธฐ
ad = pd.Series(['์๋๋ฌธ๊ตฌ', '๊ฐ๋จ๊ตฌ', '๊ฐ์๊ตฌ', '์์ด๊ตฌ', '์ํ๊ตฌ', '์ค๊ตฌ', '์ข
๋ก๊ตฌ', '์ฉ์ฐ๊ตฌ', '์ฑ๋ถ๊ตฌ', '๋๋๋ฌธ๊ตฌ',
'๋งํฌ๊ตฌ', '์๋ฑํฌ๊ตฌ', '์ฑ๋๊ตฌ', '๋์๊ตฌ', '๊ด์ง๊ตฌ', '๊ฐ๋ถ๊ตฌ', '๊ธ์ฒ๊ตฌ', '์ค๋๊ตฌ', '๊ด์
๊ตฌ', '๊ฐ๋๊ตฌ',
'๊ตฌ๋ก๊ตฌ', '์์ฒ๊ตฌ', '์กํ๊ตฌ', '๋
ธ์๊ตฌ', '์์ด๊ตฌ', '์ํ๊ตฌ', '๋๋ด๊ตฌ']) # Series ๋ ํจ์ ํธ์ถ ๋ฐฉ์์ผ๋ก, ()๋ฅผ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ list ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์๋ค๋ฉด ๊ผญ ()๋ก ๋ฌถ์ด์ค์ผํจ
df['๊ตฌ ๋ณ'] = ad # '๊ตฌ ๋ณ' ์ด๋ผ๋ column ์ด ์ถ๊ฐ๋จ
# map ๊ณผ ๋์
๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด์๋ช
์ ๊ตฌ ์ด๋ฆ์ ๋งคํํ๊ธฐ(map ์ด ์ด๋ฐ์์ ๊ฐ๋จํ ๋ฐ์ดํฐ ๋งค์นญ์ ํ์ฉํ๊ธฐ ์ข๋ค)
area_map = {'์๋๋ฌธ์': '์๋๋ฌธ๊ตฌ', '์์์': '๊ฐ๋จ๊ตฌ', '๊ฐ์์': '๊ฐ์๊ตฌ', '์์ด์': '์์ด๊ตฌ',
'์๋ถ์': '์ํ๊ตฌ', '์ค๋ถ์': '์ค๊ตฌ', '์ข
๋ก์': '์ข
๋ก๊ตฌ', '๋จ๋๋ฌธ์': '์ค๊ตฌ',
'ํํ์': '์ข
๋ก๊ตฌ', '์ฉ์ฐ์': '์ฉ์ฐ๊ตฌ', '์ฑ๋ถ์': '์ฑ๋ถ๊ตฌ', '๋๋๋ฌธ์': '๋๋๋ฌธ๊ตฌ',
'๋งํฌ์': '๋งํฌ๊ตฌ', '์๋ฑํฌ์': '์๋ฑํฌ๊ตฌ', '์ฑ๋์': '์ฑ๋๊ตฌ', '๋์์': '๋์๊ตฌ',
'๊ด์ง์': '๊ด์ง๊ตฌ', '๊ฐ๋ถ์': '๊ฐ๋ถ๊ตฌ', '๊ธ์ฒ์': '๊ธ์ฒ๊ตฌ', '์ค๋์': '์ค๋๊ตฌ',
'๊ฐ๋จ์': '๊ฐ๋จ๊ตฌ', '๊ด์
์': '๊ด์
๊ตฌ', '๊ฐ๋์': '๊ฐ๋๊ตฌ', '์ข
์์': '์ฑ๋ถ๊ตฌ',
'๊ตฌ๋ก์': '๊ตฌ๋ก๊ตฌ', '์์ฒ์': '์์ฒ๊ตฌ', '์กํ์': '์กํ๊ตฌ', '๋
ธ์์': '๋
ธ์๊ตฌ',
'๋ฐฉ๋ฐฐ์': '์์ด๊ตฌ', '์ํ์': '์ํ๊ตฌ', '๋๋ด์': '๋๋ด๊ตฌ'} # area_map ์ด๋ผ๋ ๋ณ์์ ๋์
๋๋ฆฌ ํํ์ ๋ฐ์ดํฐ ํ ๋น
df['๊ตฌ ๋ณ'] = df['๊ด์๋ช
'].map(area_map) # ํ ๋นํด์ค ๋ณ์๋ฅผ ํ์ฉํ์ฌ map ์ผ๋ก '๊ตฌ ๋ณ' column ์ ๋ฐ์ดํฐ ๊ฐ(๋์
๋๋ฆฌ ๋ฐธ๋ฅ๊ฐ)์ '๊ด์๋ช
' column ๋ฐ์ดํฐ๊ฐ(๋์
๋๋ฆฌ ํค๊ฐ)์ ๋ง๊ฒ ๋งค์นญ์์ผ์ค
# fillna ๋ฅผ ์ฌ์ฉํ์ฌ NaN ๊ฐ ๋์ฒดํ๊ธฐ
df = df.fillna('๊ตฌ ์์') # fillna ๋ก ํน์ ์ด์ ๊ฐ๋ง ๋์ฒดํ๊ฑฐ๋, ํ ๊ฐ๊ฐ ์๋ ์ฌ๋ฌ ๊ฐ์ ๋์ฒดํ ์ ์์(์ด ๊ฒฝ์ฐ, ๋์
๋๋ฆฌ ํํ๋ก ํด์ค์ผํจ)
# ์ค๋ณต ๋ฐ์ดํฐ ์ง๊ณ ํจ์๋ฅผ ์ด์ฉํ pivot table ๋ง๋ค๊ธฐ
df = df.pivot_table(values = ['๊ฐ๊ฐ(๊ฒ๊ฑฐ)','๊ฐ๊ฐ(๋ฐ์)','๊ฐ๋(๊ฒ๊ฑฐ)','๊ฐ๋(๋ฐ์)','์ด์ธ(๊ฒ๊ฑฐ)','์ด์ธ(๋ฐ์)','์๊ณ(๊ฒ๊ฑฐ)','์๊ณ(๋ฐ์)','์ ๋(๊ฒ๊ฑฐ)','์ ๋(๋ฐ์)','ํญ๋ ฅ(๊ฒ๊ฑฐ)','ํญ๋ ฅ(๋ฐ์)'],
index = ['๊ตฌ ๋ณ'], aggfunc = 'sum') # df.pivot_table(values = [์ง๊ณํ ๋์(=columns)], index = [ํ์ ๊ธฐ์ค์ผ๋ก ์ผ์ ๋์], aggfunc = '์ด์ ๋ฐ์ดํฐ๊ฐ์ ๊ณ์ฐํด์ค ํจ์')
# drop ์ ์ฌ์ฉํ์ฌ NaN ๊ฐ์ด ํฌํจ๋ ํ ์ ์ธํ๊ธฐ
df = df.drop('๊ตฌ ์์') # df.drop('์์ ๊ณ ์ถ์ ํน์ ๊ฐ(ex. NaN) ์ง์ ' ํน์ '์ญ์ ํ๋ ค๋ ํ ๋๋ ์ด์ ์ด๋ฆ', axis = 0 ํน์ 1(0์ ํ, 1์ ์ด))
# ๊ฒ๊ฑฐ์จ ๊ตฌํ ํ column ์ถ๊ฐํ๊ธฐ
df['๊ฐ๊ฐ๊ฒ๊ฑฐ์จ'] = (df['๊ฐ๊ฐ(๊ฒ๊ฑฐ)'] / df['๊ฐ๊ฐ(๋ฐ์)']) * 100 # ๋ฐฑ๋ถ์จ ๊ตฌํ๋ ๊ฑฐ๋๊น ๋จผ์ ๋๋ ๊ฐ์๋ค๊ฐ 100 ๊ณฑํด์ฃผ๊ธฐ
df['๊ฐ๋๊ฒ๊ฑฐ์จ'] = (df['๊ฐ๋(๊ฒ๊ฑฐ)'] / df['๊ฐ๋(๋ฐ์)']) * 100
df['์ด์ธ๊ฒ๊ฑฐ์จ'] = (df['์ด์ธ(๊ฒ๊ฑฐ)'] / df['์ด์ธ(๋ฐ์)']) * 100
df['์ ๋๊ฒ๊ฑฐ์จ'] = (df['์ ๋(๊ฒ๊ฑฐ)'] / df['์ ๋(๋ฐ์)']) * 100
df['ํญ๋ ฅ๊ฒ๊ฑฐ์จ'] = (df['ํญ๋ ฅ(๊ฒ๊ฑฐ)'] / df['ํญ๋ ฅ(๋ฐ์)']) * 100
df['๊ฒ๊ฑฐ์จ'] = (df['์๊ณ(๊ฒ๊ฑฐ)'] / df['์๊ณ(๋ฐ์)']) * 100
# del ์ ์ฌ์ฉํ์ฌ ์ปฌ๋ผ ์ญ์ ํ๊ธฐ
del df['๊ฐ๊ฐ(๊ฒ๊ฑฐ)'] # ์์์๋ del df.['์ปฌ๋ผ๋ช
'] ํ๊ณ ๋์์๋๋ฐ . ์ฐ๋ฉด ์ค๋ฅ๋๋๋ฐ????
del df['๊ฐ๋(๊ฒ๊ฑฐ)']
del df['์ด์ธ(๊ฒ๊ฑฐ)']
del df['์ ๋(๊ฒ๊ฑฐ)']
del df['ํญ๋ ฅ(๊ฒ๊ฑฐ)']
del df['์๊ณ(๊ฒ๊ฑฐ)']
del df['์๊ณ(๋ฐ์)']
# rename ์ ์ฌ์ฉํ์ฌ ์ปฌ๋ผ๋ช
๋ณ๊ฒฝํด์ฃผ๊ธฐ
df = df.rename(columns = {'๊ฐ๊ฐ(๋ฐ์)':'๊ฐ๊ฐ','๊ฐ๋(๋ฐ์)':'๊ฐ๋','์ด์ธ(๋ฐ์)':'์ด์ธ','์ ๋(๋ฐ์)':'์ ๋','ํญ๋ ฅ(๋ฐ์)':'ํญ๋ ฅ'}) # df.rename(columns = {๋์
๋๋ฆฌ})๋ฐ๊พธ๊ณ ์ถ์ ์ปฌ๋ผ์ ์ด๋ฆ์ ๋์
๋๋ฆฌ ํํ๋ก ํ ๋นํด์ค๋ค
df
๋๋ฒ์งธ ๋ฌธ์ ๋ถํฐ 7๋ฒ๊น์ง ์ฝ๋ ์ ์ฒด ์ฃผ์ ๋ฌ์๋์ ํด์๋ณธ์๋ค,,
โปโปโป๊ฐ๋
์ฑ ๋จ์ด์ง ์ ์์โปโปโป
์ฃผ์ํ ๊ฒ,,,