본문 바로가기

혼공학습단/혼자 공부하는 데이터 분석 with 파이썬

[혼공분석] 6주차. 복잡한 데이터 표현하기

혼공분석 6주 차 학습

 
 

# 진도 기본 숙제 추가 숙제
6주차
(08. 11 ~ 08. 17)
Chapter 06 p.344 그래프 출력 p.356 ~ 359 그래프 그리는 과정 정리

 
 

기본 숙제

 

출판사별 발행 도서 산점도

 

객체지향 API 방식

  • 명시적으로 피겨 객체와 서브플롯 객체를 만들고 이 객체의 메서드를 사용하여 그래프를 그린다.
  • 복잡한 그래프를 그리는 경우에는 객체지향 방식을 사용하는 것이 좋다.
    • 하나의 피겨에 여러 개의 서브플롯을 추가하는 경우

 

산점도 그리기

  • linewidths 매개변수
    • 마커 테두리 선의 두께를 결정한다.
    • 기본값 : 1.5
  • edgecolors 매개변수
    • 마커 테두리의 색을 결정한다.
    • 기본값 : 'face'
  • alpha 매개변수
    • 마커의 투명도를 결정한다.
  • s 매개변수
    • 마커의 크기를 지정한다.
    • 기본값 : 6
  • c 매개변수
    • 산점도의 색을 지정한다.
  • cmap 매개변수
    • 컬러맵을 지정한다.
    • 기본값 : 'viridis'
fig, ax = plt.subplots(figsize=(10, 8))
sc = ax.scatter(ns_book8['발행년도'], ns_book8['출판사'],
                linewidths=0.5, edgecolors='k', alpha=0.3,
                s=ns_book8['대출건수']**1.3, c=ns_book8['대출건수'], cmap='jet')
ax.set_title('출판사별 발행 도서')
fig.colorbar(sc)
fig.show()

 
 

추가 숙제

 

스택 영역 그래프

  • 하나의 선 그래프 위에 다른 선 그래프를 차례대로 쌓는 것
  • 그래프 사이의 간격이 y축의 값이 된다.
  • matplotlib의 stackplot() 메서드를 사용한다.

 

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

  •  y축에 넣을 2차원 배열을 만든다.
  • pandas의 pivot_table() 메서드를 사용한다.
    • index 매개변수
      • 행 인덱스로 사용할 열 이름을 넣는다.
    • columns 매개변수
      • 열 인덱스로 사용할 열 이름을 넣는다.
ns_book10 = ns_book9.pivot_table(index='출판사', columns='발행년도')
ns_book10.head()

 

이때, '발행년도' 열이 다단으로 구성되어 있다.

ns_book10.columns[:10]

"""
MultiIndex([('대출건수', 1971),
            ('대출건수', 1973),
            ('대출건수', 1974),
            ('대출건수', 1976),
            ('대출건수', 1977),
            ('대출건수', 1978),
            ('대출건수', 1979),
            ('대출건수', 1980),
            ('대출건수', 1981),
            ('대출건수', 1982)],
           names=[None, '발행년도'])
"""

 

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

  • x축에 넣을 리스트를 만든다.
  • get_level_values() 메서드를 사용한다.

다단으로 구성된 '발행년도' 열에서 연도로 구성된 두 번째 항목만 가져온다.

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

 

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

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()

연도별 대출건수 스택 영역 그래프

 


혼공분석 6주 차 회고

 

 

이로써 혼공학습단 활동이 끝났다. 귀찮아도 조금씩 공부하면서 끝까지 해보자는 마음에 힘을 내서 마무리를 할 수 있었다. 책 한 권이 끝나서 뿌듯하기도 하다.