본문 바로가기

혼공단/혼공분석10기

혼공학습단 10기 혼공분석 6주차 chapter06 기본미션+선택미션 완료

반응형

혼공학습단 10기 혼공분석 6주차 

chapter06 기본미션+선택미션 완료

#혼공학습단 #혼공 #혼공분석

 

기본미션

p. 344의 손코딩(맷플롯립의 컬러맵으로 산점도 그리기)을 코랩에서 그래프 출력하고 화면 캡처하기

 

선택미션

p. 356 ~ 359의 스택 영역 그래프를 그리는 과정을 정리하기

 

스택 영역 그래프

스택 영역 그래프는 말그대로 하나의 선 그래프 위에 다른 선 그래프를 차례대로 쌓는 것입니다. 그래프 사이의 간격이 y축의 값이 됩니다. 이해를 도울 수 있도록 그림으로 표현하면 다음과 같습니다.

 

이러한 스택 영역 그래프는 맷플롯립의 stackplot() 메서드로 그릴 수 있습니다. 이 함수는 첫 번째 매개변수에 x축의 값이 ‘발행년도’를 전달하고, 두 번째 매개변수에는 y축 값을 2차원 배열로 전달해야 합니다.

 

따라서 앞서 만든 ns_book9 데이터프레임에서 ‘발행년도’열의 개별 값을 하나의 열로 구성한 후 상위 10개 출판사의 연도별 대출건수를 스택 영역 그래프로 그려 보겠습니다. 단계별로 정리하면 다음과 같습니다.

 

  1. pivot_table() 메서드로 각 ‘발행년도’ 열의 값을 열로 바꾸기
  2. ‘발행년도’ 열을 리스트 형태로 바꾸기
  3. stackplot() 메서드로 스택 영역 그래프 그리기

 

1. pivot_table() 메서드로 각 ‘발행년도’ 열의 값을 열로 바꾸기

하나의 열을 2차원 배열로 바꾸는 것처럼 데이터 구조를 바꾸는 방법은 판다스의 pivot_table() 메서드로 처리할 수 있습니다. 이 함수는 피벗 테이블과 유사한 기능을 수행합니다.

pivot_table() 메서드를 사용하는 방법은 간단합니다. index 매개변수와 columns 매개변수에 원본 데이터프레임의 열을 지정하면 각 열의 고유한 값이 피벗 테이블로 변환된 데이터 프레임의 인덱스 열이 됩니다.

여기서는 index 매개변수에 ‘출판사’열.columns 매개변수에 ‘발행년도’열을 지정해 보죠

 

ns_book10 = ns_book9.pivot_table(index='출판사',
columns='발행년도')
ns_book10.head()

 

기대한 대로 ‘발행년도’열의 값이 하나의 열이 되었군요. 한가지 눈 여겨 보아야 할 것은 열이 다단으로 구성되어 있다는 점입니다. 첫 번째 열을 보면 1947이 아니라(‘대출건수’,1947)입니다. ns_book10의 columns 속성을 확인해 보면 쉽게 알 수 있습니다.

 

ns_book10.columns[:10]

 

2. ‘’발행년도’ 열을 리스트 형태로 바꾸기

이번에는 상위 10개의 출판사 이름과 x축에 놓을 ‘발행년도’ 리스트를 준비해 볼까요? 판다스 인덱스 객체에서 호출할 수 있는 get_level_values() 메서드는 다단으로 구성된 열 이름에서 선택한 항목만 가져올 수 있습니다.

 

top10_pubs =  top30_pubs.index[:10]
year_cols = ns_book10.columns.get_level_values(1)

 

3.stackplot() 메서드로 스택영역 그래프 그리기

x축과 y축에 전달할 값이 준비되었습니다. 이제 stackplot() 메서드에 x축 값에는 year_cols를  y축에는 ns_book10에서 상위 10개 출판사에 해당하는 행을 골라 전달합니다. 범례는 이전과 동일하게 출판사 이름으로 지정합니다. legend() 메서드는 loc 매개변수로 번례의 위치를 지정할 수 있습니다.

 

fig, ax = plt.subplots(figsize=(8, 6))
ax.stackplot(year_cols, ns_book10.loc[top10_pubs].fillna(0), labels=top10_pubs)
ax.set_title('연도별 대출건수')
ax.legend(loc='upper left')
ax.set_xlim(1985, 2025)
fig.show()



 

스택 영역 그래프가 성공적으로 출력되었습니다.

 

5가지 키워드로 정리하는 핵심 포인트

  1. 범례는 그래프에 그려진 데이터의 이름과 색상을 요약한 표입니다.
  2. 피벗 테이블은 테이블 형태의 데이터를 평균, 합 등의 방식으로 집계하여 만든 요약표입니다.
  3. 스택 영역 그래프는 여러 개의 선 그래프를 y축 방향으로 쌓은 그래프 입니다. 선 아래로 색상이 채워진 영역 형태로 표현됩니다. 마찬가지로 여러 개의 막대 그래프를 y축 방향으로 쌓으면 스택 막대 그래프가 됩니다. 막대 위에 막대가 누적되듯이 표현됩니다.

원 그래프는 데이터의 비율을 부채꼴 모양으로 나타낸 그래프 입니다. 다만, 그래프에 비율이 표시되어 있지 않으면 크기를 비교하기 어려우므로 autopct 매개변수를 사용하여 명확하게 비율을 표시해 주는 것이 좋습니다.

반응형