ํผ๋ฒํ ์ด๋ธ
import pandas as pd
import numpy as np
-๋ฌธ์ : ๋ค์ ๋ฐ์ดํฐ ํ๋ ์์ A ์๋น์ค์ ์๋ณ ํํด ํ์์๋ฅผ ๊ฐ์ ์๋ณ๋ก ๋ถ๋ฅํด ๋์ ๊ฒ์ด๋ค. ์ด ๋ฐ์ดํฐ ํ๋ ์์ ์ด์ฉํ์ฌ ํผ๋ฒ ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ.
df = pd.DataFrame({'๊ฐ์
์' : [1, 1, 1, 2, 2, 3], 'ํํด์' : [1, 2, 3, 2, 3, 3], 'ํํดํ์์' : [101, 52, 30, 120, 60, 130]})
df
pivot_table()
- ํผ๋ฒํ
์ด๋ธ(pivot_table) ์์ฑ ์ ์ง์ ํ ์ธ์๋ค์ ์ข
๋ฅ
- values : ๊ฐ ๊ทธ๋ฃน ๋ณ๋ก ์กฐํํ ๊ฐ์ ๊ธฐ์กด ๋ฐ์ดํฐํ๋ ์์ ์ด ์ด๋ฆ
- index : ํ ์ด๋ธ์ ํ์ผ๋ก ๋ค์ด๊ฐ ๊ธฐ์กด ๋ฐ์ดํฐํ๋ ์์ ์ด ์ด๋ฆ
- columns : ํ ์ด๋ธ์ ์ด๋ก ๋ค์ด๊ฐ ๊ธฐ์กด ๋ฐ์ดํฐํ๋ ์์ ์ด ์ด๋ฆ
- fill_value : ๊ฐ์ด ์กด์ฌํ๋ ์๋ ๊ทธ๋ฃน์ ์ฑ์ธ ๊ฐ ์ง์ (๊ธฐ๋ณธ ๊ฐ : np.NaN)
- aggfunc : ๊ฐ ๊ทธ๋ฃน ๋ณ๋ก ๊ฐ๋ค์ ์กฐํํ ํจ์
pivot = pd.pivot_table(df, values = 'ํํดํ์์' , index = ['๊ฐ์
์'], columns = ['ํํด์'])
type(pivot)
pandas.core.frame.DataFrame
pivot
pd.pivot_table(df, values = 'ํํดํ์์' , index = ['๊ฐ์
์'], columns = ['ํํด์'], fill_value = 0 )
-๋ฌธ์ : ๋ค์ ๋ฐ์ดํฐ ํ๋ ์์ ์ด๋ ๊ณผ์ผ ๋งค์ฅ์ ํ๋งค๋ด์ญ์ด๋ค. ๊ฐ ์ํ ํญ๋ชฉ ๋ณ, ํฌ๊ธฐ ๋ณ๋ก ํ๋งค ๊ฐ์์ ํ๋งค ๊ธ์ก์ ํฉ์ ๊ตฌํ๊ธฐ.
import random
random.randint(1,3)
2
a = []
b = []
for i in range(100):
a.append(random.randint(1,3))
b.append(random.randint(1,3))
df = pd.DataFrame({'ํ๋ชฉ' : a, 'ํฌ๊ธฐ' : b})
df
df['๊ธ์ก'] = df['ํ๋ชฉ'] * df['ํฌ๊ธฐ'] * 500
df['์์๋ฃ'] = df['๊ธ์ก'] * 0.1
df
fruit_name = {1 : 'ํ ๋งํ ', 2 : '๋ฐ๋๋', 3 : '์ฌ๊ณผ'}
fruit_size = {1 : '์', 2 : '์ค', 3 : '๋'}
df['ํ๋ชฉ'] = df['ํ๋ชฉ'].map(fruit_name)
df['ํฌ๊ธฐ'] = df['ํฌ๊ธฐ'].map(fruit_size)
df
pd.pivot_table(df, values = '๊ธ์ก', index = ['ํ๋ชฉ'], columns = ['ํฌ๊ธฐ'], aggfunc = ( 'count', 'sum'))
-๋ฌธ์ : ๋ค์ ๋ฐ์ดํฐ ํ๋ ์์. ์ด๋ ๊ณผ์ผ ๋งค์ฅ์ ํ๋งค๋ด์ญ์ด๋ค. ๊ฐ ์ํ ํญ๋ชฉ ๋ณ, ํฌ๊ธฐ ๋ณ๋ก. ํ๋งค ๊ฐ์์ ํ๋งค ๊ธ์ก / ์์๋ฃ์ ํฉ์ ๊ตฌํ๊ธฐ.
df
pd.pivot_table(df, index = ['ํ๋ชฉ'], columns = ['ํฌ๊ธฐ'], aggfunc = {'๊ธ์ก' : ['count', 'sum'], '์์๋ฃ' : 'sum'})
๋๊ธ