👩💻/pandas
3. 데이터프레임 응용(6)
글로랴
2021. 2. 2. 23:06
6️⃣ MultiIndex, 멀티 인덱스
판다스는 행 인덱스를 여러 레벨로 구현할 수 있도록 멀티 인덱스 클래스를 지원한다.
📍 pandas.DataFrame.xs(key, axis=0, level=None, drop_level=True)
- key : label or tuple of label
- axis 0 or 'index', 1 or 'columns'
- level : key가 포함된 위치 또는 label
# sex 값이 male인 행 선택
avg.xs('male', level='sex')
7️⃣ Pivot, 피벗
판다스 pivot_table() 함수는 엑셀에서 사용하는 피벗테이블과 비슷한 기능을 처리한다.
📍 pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
피벗테이블을 구성하는 4가지 요소(행 인덱스, 열 인덱스, 데이터 값, 데이터 집계 함수)에 적용할 데이터프레임의 열을 각각 지정하여 함수의 인자로 전달한다.
👉 집계에 사용할 열을 1개씩 지정해보기
pdf1 = pd.pivot_table(df, # 피벗할 데이터프레임
index='class', # 행 위치에 들어갈 열
columns='sex', # 열 위치에 들어갈 열
values='age', # 데이터로 사용할 열
aggfunc='mean') # 데이터 집계 함수
pdf1
👉 집계에 사용할 열을 2개 이상 지정해보기
pdf1_2 = pd.pivot_table(df, # 피벗할 데이터프레임
index=['class', 'sex'], # 행 위치에 들어갈 열
columns='survived', # 열 위치에 들어갈 열
values=['age', 'fare'], # 데이터로 사용할 열
aggfunc='mean') # 데이터 집계 함수
pdf1_2
👉 집계 함수를 2개 이상 지정해보기
pdf2 = pd.pivot_table(df, # 피벗할 데이터프레임
index='class', # 행 위치에 들어갈 열
columns='sex', # 열 위치에 들어갈 열
values='age', # 데이터로 사용할 열
aggfunc=['mean', 'sum']) # 데이터 집계 함수
pdf2
👉 집계에 사용할 열과 집계함수를 2개 이상 지정해보기
pdf2_2 = pd.pivot_table(df, # 피벗할 데이터프레임
index=['class', 'sex'], # 행 위치에 들어갈 열
columns='survived', # 열 위치에 들어갈 열
values=['age', 'fare'], # 데이터로 사용할 열
aggfunc=['mean', 'sum']) # 데이터 집계 함수
pdf2_2
🤜 피벗테이블 '행'을 선택해보자 🔥
pdf2_2.xs('First')
pdf2_2.xs( ('First', 'female') )
# 행 인덱스 레벨을 직접 지정
pdf2_2.xs('male', level='sex')
# 아래 세 코드는 모두 같은 결과를 보여준다.
pdf2_2.xs( ('Second', 'male'), level=[0, 1])
pdf2_2.xs( ('Second', 'male'), level=['class', 'sex'])
pdf2_2.xs( ('Second', 'male'), level=[0, 'sex'])
🤜 피벗테이블 '열'을 선택해보자 🔥
pdf2_2.xs('mean', axis=1)
pdf2_2.xs( ('mean', 'age'), axis=1 )
pdf2_2.xs(1, level='survived', axis=1)
pdf2_2.xs( ('sum', 'fare', 0), level=[0, 1, 2], axis=1 )
반응형