[혼공분석] 5주차

LeeHsss·2025년 2월 13일
0

데이터 분석

목록 보기
7/9
post-thumbnail

Chapter 05. 데이터 시각화하기

Chapter 05.1 - matplotlib 기본 요소 알아보기

1. Figure 객체
  • 모든 그래프 구성요소를 담고 있는 최상위 객체

    그래프 크기 변경하기: figsize 매개변수 (그래프를 그리는 캔버스 크기)

    • figure() 함수를 사용하여 객체를 만들면 그래프 옵션을 조절할 수 있다.
    • figsize 매개변수에 그래프 크기를 튜플로 지정
    • 기본 그래프 크기는 너비:6, 높이:4이고, 단위는 Inch이다.
    • 현재 설정된 기본 그래프 크기를 확인하려면 rcParams 객체를 사용한다.

    그래프 크기 변경하기: dpi 매개변수 (그래프를 확대하는 돋보기 개념)

    • dpi 매개변수를 변경하면, 인치당 픽셀수가 커지기 때문에 그래프가 커진다.
2. rcParams 객체
  • matplotlib 그래프의 기본 값을 관리하는 객체

  • 객체에 담긴 기본값을 출력할 뿐만 아니라 값을 변경할 수도 있다.

    DPI 기본값 바꾸기

    plt.rcParams['figure.dpi'] = 100
    
```
**산점도 마커 모양 바꾸기**
```python
plt.rcParams['scatter.marker'] = '*'
```
- 여러 개의 산점도가 있고, 산점도마다 마커를 다르게 그려야 한다면 scatter() 함수에 marker 매개변수로 마커의 모양을 지정한다.

> 💡 rcParams 객체의 전체 설정 목록을 꼭 보고 싶은 경우!
> - [rcParams 객체 설정 목록](https://matplotlib.org/stable/api/matplotlib_configuration_api.html#default-values-and-styling)
> - [각 항목의 기본 값 목록](https://matplotlib.org/stable/users/explain/customizing.html#the-matplotlibrc-file)
3. 여러개의 subplot 출력하기
  • 하나의 figure 객체 안에는 여러개의 subplot을 추가할 수 있다.

  • subplot이란 matplotlib의 Axes 클래스 객체를 의미

  • 하나의 subplot은 최소 두개의 축을 포함한다. (2차원 그래프의 경우, x축, y축을 포함)

  • 각 축에는 눈금 또는 틱이 표시된다.

    서브플롯 그리기: subplots 함수

    • 서브플롯을 정의하려면 subplots에 원하는 서브플롯 개수를 지정한다.
    • figsize 매개변수로 figure의 크기를 변경할 수 있다.

    서브플롯을 가로로 나란히 출력하기

    • subplots 함수에 행과 열을 지정하면 원하는 subplot 개수의 피겨를 만들 수 있다. (첫 번째 매개변수는 행의 개수, 두 번째 매개변수는 열의 개수)

    서브플롯 x축, y축 라벨 설정하기

    • x축 라벨 설정: set_xlabel()
    • y축 라벨 설정: set_ylabel()

Chapter 05.2 - 선 그래프와 막대 그래프 그리기

  • 선 그래프는 데이터 포인트 사이를 선으로 이은 그래프
  • 막대 그래프는 데이터 포인트의 크기를 막대 높이로 나타내는 그래프

선 그래프와 막대 그래프는 한 축을 따라 어떤 데이터의 변화를 살펴보는데 용이하다.

연도별 발행 도서 개수 구하기 (value_counts() 메서드 활용)
  • value_counts() 메서드 는 고유한 값이 나타나는 횟수를 계산한다. (numpy 패키지의 unique() 함수에 return_counts 매개변수를 True로 설정한 것과 같은 결과 출력)
  • value_counts()의 반환 객체는 pandas의 시리즈 객체로, 첫 번째 열은 인덱스, 두 번째 열은 값에 해당한다.
  • value_counts() 메서드는 기본적으로 값을 기준으로 내림차순으로 정렬한다.
  • sort_index(): 인덱스를 오름차순으로 정렬
주제별 도서 개수 구하기
  • 주제분류번호 열 데이터를 입력받아 맨 앞자리만 출력하는 함수 작성 (도서관에서 책을 분류하는 기준 십진분류코드 포함)

    def kdc_1st_char(no):
        if no is np.nan:
            return '-1'
        else
            return no[0]
선 그래프 그리기
  • matplotlib의 plot() 함수를 사용해서 선 그래프를 그린다.

  • 서브플롯을 사용하지 않을 때는 그래프 제목은 title() 함수, x축 이름과 y축 이름은 각각 xlabel() 함수ylabel() 함수를 사용.

    • subplot axes 객체에 설정 했던 set_xlabel, set_ylabel 함수와 유사
  • 첫 번째 매개변수는 x축의 값, 두 번째 매개변수는 y축에 해당하는 값을 전달.

    선 모양과 색상 바꾸기

    • linestyles 매개변수: 선 모양을 지정
      • 기본 값: '-' (실선을 나타냄)
      • ':': 점선을 나타냄
      • '-.': 쇄선을 나타냄
      • '--': 파선을 나타냄
    • color 매개변수: 색상을 지정
      • 16진수 코드 컬러 지정
      • 색 이름 지정 ('red')
    • marker 매개변수
    e.g.) 마커는 점으로, 선은 점선을 사용한 선 그래프를 빨간색으로 그리기.
            - plot 매개변수로 시리즈 객체를 넘길 경우, 알아서 index를 x축으로, value를 y축 값으로 사용
    
    
    plt.plot(count_by_year, marker ='.', linestyle = ':', color = 'red')
    plt.title('Books By Year')
    plt.xlabel('year')
    plt.ylabel('number of books')
    plt.show()
    
    
  • 위와 같이 marker, linestyle, color를 매개변수로 지정한 방법 말고 하나의 문자열로 합쳐서 표현할 수 있다.
    -> '.:r' (marker는 점으로, 선은 점선으로, 색은 빨간색으로 그리라는 의미)

    💡 color 매개변수에서 지원하는 색 종류

    • blue
    • green
    • red
    • cyan
    • magenta
    • yellow
    • black
    • white
    plt.plot(count_by_year, '.:r')
    
    

    선 그래프 눈금 개수 조절 및 마커에 텍스트 표시하기

    • x축 눈금을 지정할 때는 xticks() 함수를 사용 (y축 눈금을 지정할 때는 yticks() 함수 사용)

      • xticks() 함수의 매개변수에 파이썬 range() 함수를 사용 (꼭 range() 함수가 아니어도 됨. list, 배열 같은 형태도 가능함)
      • 💡 subplot을 그릴 때 x축, y축 눈금을 지정할 때는 set_xticks(), set_yticks() 메서드 사용
    • 그래프에 값을 표시할 때는 annotate() 함수를 사용

      • 첫 번째 매개변수에 그래프에 나타낼 문자열을 지정하고, 두 번째 매개변수에 문자열이 나타날 x, y 좌표를 튜플로 지정.
    • 텍스트를 마커에서 떼어내기 위해 위치를 조절할 때는 xytext 매개변수를 사용

    • 상대적인 위치를 포인트나 픽셀 단위로 지정해야 할 때는 textcoords 매개변수에 포인트 단위의 상대 위치를 나타내는 'offset points'를 지정. (1 point는 1/72 인치를 의미)

      • 만약 픽셀 단위로 지정하려면 'offset pixels'로 지정.
막대그래프 그리기
  • matplotlib에서 막대 그래프는 bar() 함수로 그린다.
  • plot() 함수와 유사하게, 막대 그래프에 x축의 값과 막대 높이에 해당하는 y축의 값을 전달한다.

💡 이미지 출력하고 저장하기

  • matplotlib에서 이미지를 읽을 때는 imread() 함수를 사용한다.
    • 파일 이름을 매개변수로 전달하면 높이, 너비, 채널 값을 담은 넘파이 배열을 반환 한다. (shape 변수 사용)
이미지 화면에 출력하기 : imshow() 함수
  • imshow() 함수에 imread() 함수를 통해 얻은 배열을 파라미터로 전달한다.
  • imshow() 함수는 피겨 크기에 상관 없이 기본적으로 원본 이미지의 가로세로 비율을 유지한다.
  • 이미지에 표시된 축과 눈금을 표시하지 않으려면 axis() 함수를 off로 지정한다.
이미지 저장하기 : imsave() 함수
  • 첫 번째 매개변수는 저장할 파일 이름, 두 번째 매개변수는 이미지가 저장된 넘파이 배열
  • 파일 이름의 확장자를 사용해 자동으로 이미지를 변환해 준다.
그래프를 이미지로 저장하기 : savefig() 함수
  • 첫 번째 매개변수는 저장할 이미지의 파일 이름
  • dpi 매개변수에는 그래프를 저장할 때, 사용할 dpi를 따로 지정할 수 있다. (기본 값: figure)

숙제.

필수숙제

p314. 주제별 도서 개수 막대 그래프 그리기

추가숙제

p315. 텍스트 정렬, 막대 조절 및 색상 바꾸기

profile
조금씩 지식의 영역을 넓혀가는 중이에요...😌

0개의 댓글

관련 채용 정보