let us not love with words or tongue but actions and truth.

IT/파이썬

[그래프] pivot_table을 활용한 heatmap 그래프 그리기

sarah0518 2021. 2. 9. 18:00
728x90

 

아래 그래프는 수학과 영어점수 백분율에 따른 학생수입니다.

 

가장 진한 곳을 보면 수학점수가 하위(75%초과 100%이하)에 속하는 학생들은

영어점수가 나름 상위쪽인 50%해당에 분포하고 있네요.

 

 

이 부분에 속하고 있는 학생수가 가장 많기 때문에 색상은 진한색으로 표현이 된 것입니다.

 

 

 

 

파이썬으로 위와같은 히트맵 그래프를 그리는 법을 알아보려고 합니다.

 

 

 

하지만 그전에 pivot_table을 만드는 법을 잠깐 알아보려고 합니다.

 

아래와 같은 각 반별 수학점수 백분율그룹에 속하는 인원수를 나타내는 표가 있다고 하죠.

 

 

 

 

여기서는 그냥 백분율그룹별 인원수의 합계를 구하는 pivot table을 만들고자 합니다.

 

즉, 아래와 같은 테이블을 만들고 싶은 것이죠!

 

코드는 간단합니다.

 

1
math.pivot_table(values='인원수',index='수학점수 백분율', aggfunc='sum')
cs

 

value에 값에 들어갈 컬럼을 넣어주고,

엑셀에서 pivot table만들 때, 행에 들어가는 부분이 index라고 생각해주시면 됩니다.

(aggfunc을 생략하시면 default는 평균 값입니다!)

 

 

혹시, pivot table과 함께 자주쓰이는 melt와 stack함수를 공부하고 싶다면 아래 페이지 참고하세요!

 

sarah0518.tistory.com/72

 

 

 

이제 다시 히트맵 그래프 그리기로 돌아가보죠!!

 

 

1
2
df_pivot_EM=class_EM[class_EM['인원수']>1].pivot_table(values='인원수',index='수학점수 백분율',columns='영어점수 백분율', aggfunc='sum').sort_values('영어점수 백분율', ascending=False)
 
cs

우선 인원수가 너무 적은 학급은 의미가 없을 테니, 1이상으로 학생수를 걸러줬습니다.

( ['인원수'] > 1) 참고

 

 

1
2
3
4
5
6
7
8
9
10
import seaborn as sns
 
# 우선 그래프의 사이즈를 설정해주고
plt.figure(figsize=(15,5))
 
#seaborn을 활용해서 heatmap을 그립니다. 
sns.heatmap(df_pivot, annot=True, fmt='.0f',cmap='Blues')
 
#annot은 아마도...annotation의 축약으로 주석달기를 뜻할겁니다.
#주석을 달고, 소수점 없이 표현한다고  fmt='.0f'에서 명시해줌
cs

 

그 다음 위와 같이 seaborn을 활용하여 heatmap을 그려주면 끝입니다.!!

 

 

 

 

 

 

 

728x90

'IT > 파이썬' 카테고리의 다른 글

[그래프] 3D 그래프 그리기  (0) 2021.02.19
GridSearchCV 2탄 (for문 활용)  (0) 2021.02.18
Stack과 melt로 데이터 Transpose하기  (0) 2021.02.06
[그래프] Bar 그래프 그리기  (0) 2021.02.02
[그래프] box-plot 그리기  (0) 2021.01.27