[파이썬] 데이터변형 | 재구조화 (피벗테이블)
2020. 4. 18. 13:28ㆍ노트/Python : 프로그래밍
예제 데이터
import pandas as pd
import numpy as np
mul_index = pd.MultiIndex.from_tuples([('cust_1','2020'), ('cust_1','2021'),
('cust_2','2020'), ('cust_2','2021')])
data = pd.DataFrame(data=np.arange(16).reshape(4,4),
index = mul_index,
columns = ['prd_1','prd_2','prd_3','prd_4'],
dtype='int')
- 데이터를 재구조화 할때 사용하는 함수
- pivot, pivot_table
- melt
- stack, unstack
- stack : 데이터의 칼럼을 로우로 피벗(또는 회전) 시킨다.
- unstack : 로우를 칼럼으로 피벗(또는 회전) 시킨다.
# 멀티인덱스 확인하기
datastacked=data.stack()
datastacked.index
MultiIndex([('cust_1', '2020', 'prd_1'),
('cust_1', '2020', 'prd_2'),
('cust_1', '2020', 'prd_3'),
('cust_1', '2020', 'prd_4'),
('cust_1', '2021', 'prd_1'),
('cust_1', '2021', 'prd_2'),
('cust_1', '2021', 'prd_3'),
('cust_1', '2021', 'prd_4'),
('cust_2', '2020', 'prd_1'),
('cust_2', '2020', 'prd_2'),
('cust_2', '2020', 'prd_3'),
('cust_2', '2020', 'prd_4'),
('cust_2', '2021', 'prd_1'),
('cust_2', '2021', 'prd_2'),
('cust_2', '2021', 'prd_3'),
('cust_2', '2021', 'prd_4')],
)
- pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
타이타닉 데이터 예제
path = "C:\\Users\\student\\Desktop\\DY\\★ 데이터\\102. ex_sample_Python\\"
train = pd.read_csv(path+"train.csv")
train
train.pivot_table(index=["Sex"])
#성별, 선실등급별 생존률
train.pivot_table(index=["Sex","Pclass"],values="Survived",aggfunc=np.mean)
groupby 메카닉
# 성별로 구분(groupby), 생존여부(survived)에 대해 describe
train.groupby("Sex")[["Survived"]].describe()
import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':['a','a','b','b','a'],
'key2':['one','two','one','two','one'],
'data1': np.random.randn(5),
'data2': np.random.randn(5)})
df['data1'].groupby([df['key1'],df['key2']]).mean()
df.groupby(['key1','key2']).mean()
df['data1'].groupby([df['key1'],df['key2']]).mean().unstack()
Melt 함수
- pandas.melt(frame: pandas.core.frame.DataFrame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
#구분자 컬럼 지정 "key 기준"
pd.melt(df, id_vars=['key'],value_vars=["A","B","C"])
# 기준 열에 대해 다른 열의 값을 나타낸다.
참고
파이썬 라이브러리를 활용한 데이터 분석(2판) p334~p345 , p387~p389
'노트 > Python : 프로그래밍' 카테고리의 다른 글
[케라스] 주식가격 예측하기(2) 파이썬 코드 (0) | 2020.04.18 |
---|---|
[텐서플로우] 주식가격 예측하기(1) 파이썬 코드 (0) | 2020.04.18 |
[텐서플로우] 다중 선형 회귀를 이용한 당뇨병 분류기 파이썬 코드 (0) | 2020.04.18 |
[케라스] 암 분류기 , 당뇨병 분류기 파이썬 코드 (0) | 2020.04.18 |
[파이썬] 데이터변형 | 이항변수화 , 이산화 (0) | 2020.04.17 |