안녕하세요.
이번 글에서는 Pandas 라이브러리를 사용해 막대그래프를 그리는 법을 설명해 보겠습니다.
Pandas 라이브러리는 데이터 정리 및 분석 할 때 많이 사용되며 쉽게 다양한 그래프를 바로 그려볼 수도 있습니다.
이 글에서는 Kaggle의 데이터 과학자 설문조사에서 추출한 데이터셋을 예로 들어 설명해보겠습니다.
import pandas as pd # 2020 설문조사에서 데이터 과학자들이 사용하는 프로그래밍 언어
df = pd.DataFrame({'lang':['Python', 'R', 'SQL', 'C', 'C++', 'Java', 'Javascript', 'Julia', 'Swift', 'Bash', "MATLAB", 'None', 'Other'], 'val':[15531, 4278, 7536, 3316, 3828, 3368, 2996, 263, 199, 1777, 2218, 207, 1946]})
캐글 데이터셋에서 데이터 과학자분들이 제일 많이 사용하는 프로그래밍 언어 투표 결과를 pandas 데이터프레임 df으로 만들어봤습니다.
이 데이터프레임을 바로. plot.bar()를 사용하여 막대그래프를 그릴 수 있습니다.
.plot.bar()로 막대그래프 그리기
df.plot.bar(x='lang', y='val', rot=0)
이렇게 글자가 겹치는 경우 다양한 방법으로 해결 가능합니다.
1) 글 사이즈 줄이기
2) 그래프 크기 키우기
3) 글 회전하기
4) 수평 막대그래프 그리기
글자 크기 줄이기
fontsize 값을 바꿔 글자 크기를 바꿀 수 있습니다.
df.plot.bar(x="lang", y="val", rot=0, fontsize=5)
그래프 크기 키우기
figsize=( , )에 값을 바꿔 그래프 크기를 바꿀수있습니다.
# 안겹치게 사이즈를 늘려준 그래프
ax = df.plot.bar(x='lang', y='val', rot=0, figsize=(10,5))
글자 회전시키기
rot = 0 값을 바꾸면 글씨를 회전시킬 수도 있습니다.
# 글자 45도 회전
ax = df.plot.bar(x='lang', y='val', rot=45)
# 글자 90도 회전
ax = df.plot.bar(x='lang', y='val', rot=90)
글자를 회전시키면 긴 글자가 겹치는 일은 없지만 고개도 같이 회전시켜야 하는 수고(?)가 있습니다.
웬만하면 글 회전시키는 일을 피하는 게 좋습니다.
수평 막대그래프 그리기
수평 막대그래프를 그리면 x-label을 회전시키는 일을 피할 수 있습니다.
수평 horizontal의 h를 붙힌 .plot.barh()로 수평 막대그래프 그리기
df.plot.barh(x="lang", y="val")
막대 그래프 길이 순으로 정렬
막대그래프는 아무래도 길이 순으로 정렬하는 게 보기에도, 이해하기에도 쉽습니다.
Pandas에서 데이터프레임을 .sort_values를 사용하여 정렬하면 쉽습니다.
# 데이터프레임 정렬 후 그래프 그리기
df = df.sort_values(by=['val'], ascending=False)
ax = df.plot.bar(x='lang', y='val', rot=0, figsize=(12,5))
# 정렬 후 수평 막대 그리기
df = df.sort_values(by=['val'], ascending=True)
ax = df.plot.barh(x='lang', y='val')
아무래도 막대 크기 순으로 보니 뒤죽박죽 섞인 막대그래프보다 보기에 편합니다.
파이썬, SQL, R, C++ 순으로 인기가 많은 것을 볼 수 있습니다.
막대그래프 색 바꾸기
막대 색깔은 color= 값을 바꿔 쉽게 바꿀 수 있습니다. 여기서 빨강 r, 초록 g, 파랑 b이런 값을 넣으면 이렇게 쨍한 색의 그래프를 볼 수 있습니다.
df.plot.barh(x='lang', y='val', color='r')
df.plot.barh(x='lang', y='val', color='g')
df.plot.barh(x='lang', y='val', color='b')
여기서 투명도 값인 alpha만 바꿔줘도 조금 더 보기 편한 색을 쉽게 만들 수 있습니다.
df.plot.barh(x='lang', y='val', color='r', alpha=0.5)
df.plot.barh(x='lang', y='val', color='g', alpha=0.5)
df.plot.barh(x='lang', y='val', color='b', alpha=0.5)
따로 원하는 색이 있다면 색상 코드를 넣는 것도 가능합니다.
df.plot.barh(x='lang', y='val', color='#cdb4db')
df.plot.barh(x='lang', y='val', color='#8e9aaf')
한 가지 색상이 아니라 여러 가지 색상을 넣는것도 가능! coolors 같은 색 조합 사이트에서 참고하여 좋은 조합을 찾는걸 추천합니다.
df.plot.barh(x='lang', y='val', color=['yellow', 'green'], alpha=0.5) #두 가지 색을 넣어 반복
my_colors = ['#fcd5ce', '#e8e8e4', '#ffd7ba']
df.plot.barh(x='lang', y='val', color=my_colors) #세 가지 색이 반복
사실 데이터 시각화 코스에서는 한가지 색을 쓰는 걸 추천했지만 가끔 여러가지 색상도 나쁘진 않다고 생각합니다 (개인적인 생각)
막대 두께 조정하기
또 원하는 스타일에 맞게 width 값으로 막대 두께도 조정 가능합니다.
df.plot.barh(x='lang', y='val', width=0.3, color=my_colors)
df.plot.barh(x='lang', y='val', width=0.8, color=my_colors)
막대그래프 완성!
xlabel (x축 제목) title (그래프 제목), 범례가 필요 없는 경우 legend=False를 넣어주면 그래프 완성!
df.plot.barh(x='lang', y='val', figsize=(8,5), xlabel="Programming Language", title="What programming languages do you use on a regular basis?", width=0.8, color=['#2a9d8f', '#e9c46a', '#f4a261', '#e76f51'], legend=False)
이번 글에서는 파이썬의 Pandas 라이브러리를 사용하여 막대그래프를 그리는 방법을 정리해봤습니다.
오타나 궁금한 점이 있다면 댓글로 남겨주세요 :)
'ᐧ༚̮ᐧ Data Science | AI > Python' 카테고리의 다른 글
데이터 분석에 쓰이는 파이썬 라이브러리 소개 (0) | 2021.09.24 |
---|---|
[파이썬] 판다스 pandas csv 파일 불러오기 & 데이터 살펴보기 (0) | 2021.09.23 |
[데이터 분석] 파이썬 Pandas 행, 열 삭제 (0) | 2021.06.27 |
[Python] 아나콘다 (Anaconda) 다운로드 및 설치하기 feat. 주피터 노트북, 파이썬/콘다 버전 확인 (0) | 2021.06.17 |
[파이썬] 판다스 pandas 기초: 판다스의 자료 구조 series와 dataframe (0) | 2021.06.13 |