matplotlib 02 bar chart
강의 홍보
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
공지
제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.
도움이 되었다면 Github
에 Star
를 눌러주세요.
I. Matplotlib 기본 그래프
Matplotlib는 파이썬 표준 시각화 도구라고 불리워지며 파이썬 그래프의 기본 토대가 된다고 해도 무방하다. 객체지향 프로그래밍을 지원하므로 세세하게 꾸밀 수 있다.
II. matplotlib 설치
설치방법은 윈도우 명령 프롬프트, MacOS, Linux 터미널에서 pip install matplotlib
입력하면 되지만, 간혹 여러 환경에 따라 달라질 수 있으니 관련 싸이트에서 확인하기를 바란다.
III. 막대 그래프(Bar Chart)
시계열 데이터와 같이 연속적인 값의 변화와 패턴을 파악하는데 적합하다. 그래프를 그리기 위해 2020년 전세계를 강타했던 코로나 데이터셋을 위주로 그래프를 그려보도록 한다.
(1) 데이터 수집
엑셀파일 데이터를 불러와서 실제 잘 들어왔는지 확인해봅니다.
# 모듈 불러오기
import pandas as pd
import matplotlib.pyplot as plt
import calendar
import numpy as np
# Excel 데이터 데이터프레임으로 변환
covid_19 = pd.read_excel("/content/20200406-COVID-19-geographic-disbtribution-worldwide.xlsx")
print(covid_19.head())
dateRep day month ... geoId countryterritoryCode popData2018
0 2020-04-05 5 4 ... AF AFG 37172386.0
1 2020-04-04 4 4 ... AF AFG 37172386.0
2 2020-04-03 3 4 ... AF AFG 37172386.0
3 2020-04-02 2 4 ... AF AFG 37172386.0
4 2020-04-01 1 4 ... AF AFG 37172386.0
[5 rows x 10 columns]
(2) 데이터 필터링
우선 KOR
기준으로 데이터를 Filter
링을 해줍니다.
# KOR 데이터만 추출, val. countryterritoryCode
covid_kor = covid_19[covid_19['countryterritoryCode'] == 'KOR']
covid_kor.set_index('dateRep', inplace=True)
# 월 생성
months = covid_kor['month'].unique().tolist()
# cases 생성
case_quantity = covid_kor.groupby("month").sum()['cases'].tolist()
(3) 그래프 레이아웃 구성
그래프의 크기 등을 구성합니다.
figure, axis = plt.subplots()
(4) x축 설정
X축에는 12월~4월까지 구성이 될 것입니다.
plt.xticks(months, rotation=30)
([<matplotlib.axis.XTick at 0x7f574b40fd68>,
<matplotlib.axis.XTick at 0x7f574b40fd30>,
<matplotlib.axis.XTick at 0x7f574b40f978>,
<matplotlib.axis.XTick at 0x7f574b42e160>,
<matplotlib.axis.XTick at 0x7f574b42e5c0>],
<a list of 5 Text major ticklabel objects>)
(5) 막대 그래프 출력 (세로)
이제 막대 그래프를 그려본다. 이 때, 단순히 그래프가 작성하는 것이 아니라 text
도 같이 입력하도록 한다.
figure, axis = plt.subplots()
plt.xticks(months, rotation=30)
plot = axis.bar(months, case_quantity)
for rectangle in plot:
height = rectangle.get_height()
axis.text(rectangle.get_x() + rectangle.get_width()/2., 1.002 * height, '%d'%int(height), ha='center', va='bottom')
plt.show()
여기에서 for-loop
를 작성하는 이유는 각 그래프마다 데이터의 값이 달라지기 때문이며, 데이터의 값을 기준으로 높이를 설정하는 것이기 때문에 그렇습니다.
(6) 막대 그래프 출력 (가로)
이번에는 동일한 코드이지만, 막대 그래프를 가로로 표시될 수 있도록 소스코드를 구현합니다.
이 때 주의해야 하는 것은 plt.yticks
로 수정해야 한다는 점입니다. 또한, height
에 해당하는 부분은 모두 width
로 바꿔준 후, 적정한 값을 입력하여 출력합니다.
figure, axis = plt.subplots()
plt.yticks(months, rotation=30)
plot = axis.barh(months, case_quantity)
for rectangle in plot:
width = rectangle.get_width()
axis.text(width + 300, rectangle.get_y() + 0.1, '%d'%int(width), ha='center', va='bottom')
plt.show()
VI. 실습파일
- 구글코랩에서 빠르게 실습도 할 수 있습니다. 실습
V. Reference
Mukhiya, Uuresh Kumar. Ahmed Usman. Hands-on Exploratory Data Analysis With Python: Perform EDA Techniques to understand, Summarize, and Investigate Your Data. Packt publishing limited, 2020.