본문 바로가기

Python 입문

Matplotlib 연습

1. Matplotlib 이란?

파이선에서 사용되는 시각화 라이브러리

Pandas로 관계형 데이터를 파악하고, Matplotlib로 시각화한다.

단, 엑셀처럼 그려주지 않으므로, 폰트부터 그래프 사이즈까지 지정해줘야 한다.

 

2. Matplotlib 불러오기

import matplotlib.pyplot as plt

import pandas as pd 라고 불러왔던 것처럼 불러온다.

다만 Matplotlib 데이터는 방대하므로 .pyplot 라고 지정해준다.

 

3. 데이터 만들기

시각화 하기 전에 내가 원하는 데이터 모양으로 만들어준다.

엑셀의 피벗 테이블과 같은 개념인 것 같다.

 

sum_of_calls_by_week = chicken_data.groupby('요일')['통화건수'].sum()

 

요일별 통화 건수의 총합 데이터 테이블 생성 = sum_of_calls_by_week 라고 부를 것이다.

요일별이므로 chicken_data를 .groupby('요일')

통화 건수의 총합을 계산해야 하므로, 바로 붙여서 ['통화건수'].sum()

 

4. 시각화

여기서부터는 Matplotlib 함수를 그대로 사용하므로, 문법 외우듯이 익혀두자.

그래프 크기 설정 plt.figure(figsize=(8,5))

 

가로/세로축에 들어갈 데이터 설정 plt.bar(가로, 세로)

가로축에서 sum_of...week.index 라고 작성한 것은, 시각화하기 전 작성했던 데이터 테이블에서

'요일별' 통화 건수의 총합이기 때문에, '요일'이 index 값이 되었기 때문으로 보인다.

실제로 sum_of_calls_by_week 데이터를 열어보면, 명확하게 알 수 있다.

다만 위와 같이 코드를 실행하면, 한국어 폰트가 설정되어 있지 않기 때문에 에러가 난다.

plt.rcParams['font.family'] = "AppleGothic"

설정해주고 기존 코드를 다시 실행하면, 폰트가 네모로 깨지지 않고 잘 보인다.

 

윈도우인 경우 맑은 고딕으로 설정한다.

plt.rcParams['font.family'] = "Malgun Gothic"

 

참고로 폰트 사이즈를 확인하는 코드도 알고 가자.

plt.rcParams['font.size']

 

Matplotlib 활용해서 처음 만든 그래프

 

5. 정렬

통화 건수 기준 우상향 그래프

sorted_sum_of_calls_by_week = sum_of_calls_by_week.sort_values(ascending=True)

.sort_values() 함수를 통해 우상향(ascending=True) 데이터로 정렬

통화 건수 기준 우상향 그래프

요일 기준 그래프

weeks = ['월', '화', '수', '목', '금', '토', '일']

요일 순서를 정해준다.

 

sum_of_calls_by_weeks = chicken_data.groupby('요일')['통화건수'].sum().reindex(weeks)

기존과 동일하게 요일별 통화 건수의 총합을 구하지만

.reindex() 함수를 통해, 정해둔 요일 순서(weeks)를 불러온다.

기존과 다른 (순서) 데이터가 되었으므로,  sum_of_calls_by_weeks 라고 정의한다.

요일 기준 그래프

참고로 데이터를 다시 정렬한 후에는 plt.figure() plt.bar() plt.title() plt.show() 함수를 통해 그래프를 다시 그려줘야 한다.

 

가로축 명칭 추가 plt.xlabel('지역별')

가로축 명칭 각도 조절 plt.xticks(rotation = 45)

 

6. Chaining

sum_of_calls_by_week = chicken_data.groupby('요일')['통화건수'].sum()

참고로 이렇게 가로로 길게 적는 것을 chaining이라고 부른다.

 

실제로 함수가 동작하는 순서대로 파이선을 적어보면, 세 줄이 된다.

groupdata = chicken_data.groupby('요일')

call_data = groupdata['통화건수']

sum_of_calls_by_week = call_data.sum()

'Python 입문' 카테고리의 다른 글

데이터 분석1-2. 이탈 분석  (0) 2021.06.26
데이터 분석 1-1. 상권 분석  (0) 2021.06.16
Pandas 연습  (125) 2021.05.23
파이선 기초 문법 정리 2  (0) 2021.05.19
파이썬 기초 문법 정리 1  (0) 2021.05.19