[Pandas] 피벗 테이블 실습

정만·2025년 4월 9일

데이터분석

목록 보기
57/61

문제

피벗 테이블로 몬트리올 올림픽의 국가별 금메달, 은메달, 동메달의 개수를 계산하자. 이때 결측값은 0으로 채우고, 금메달, 은메달, 동메달 개수, 나라 이름 순서대로 내림차순 정렬해라. 메달 정보는 medal 컬럼에 저장되어 있고, 1st는 금메달, 2nd는 은메달, 3rd는 동메달을 의미한다.

금메달 개수를 기준으로 먼저 내림차순 정렬한다.
금메달 개수가 같은 경우에는 은메달 개수를 기준으로 내림차순 정렬한다.
금메달과 은메달 개수도 같은 경우에는 동메달 개수를 기준으로 내림차순 정렬한다.
금메달, 은메달, 동메달 개수도 모두 같은 경우에는 나라 이름을 기준으로 내림차순 정렬한다.

import pandas as pd

olympic_df = pd.read_csv('data/olympic.csv')

pd.pivot_table(olympic_df, index = 'team', columns = 'medal', aggfunc = 'size').fillna(0).sort_values(
    by = ['1st','2nd','3rd','team'],
    ascending = False)

풀이

  1. pd.pivot_table에서 첫 번째 아규먼트로는 피벗 테이블을 만들 데이터인 olympic_df, index에는 국가명을 담고 있는 team 컬럼을, columns에는 메달 정보를 담고 있는 medal 컬럼을 넣는다.

  2. 메달의 개수를 세기 위해 aggfunc는 size로 설정한다.

  3. NaN 값들이 포함되어 있기에, fillna() 함수를 사용해서 결측값들을 0으로 채운다.

4.sort_values() 함수를 사용해서 by에 리스트로 ['1st', '2nd', '3rd', 'team']을 넘겨 준다.

profile
멋있는 어른이 되고싶은 정만이의 벨로그

0개의 댓글