Matplotlib - heatmap & pandas pivot table
category
URL
date
Jan 27, 2023
slug
Matplotlib-heatmap-pandas-pivot-table
author
status
Public
tags
Playdata_Python
summary
heatmap 과 pandas pivot table
type
Post
thumbnail
updatedAt
Jan 27, 2023 07:47 AM
pandas pivot table
- 데이터 column 중에서 두 개의 column을 각각 row 인덱스, column인덱스로 사용하여 데이터를 조회하여 펼쳐놓은 것
- pandas는 지정된 두 column을 각각 row 인덱스와 column 인덱스로 바꾼 후 row 인덱스의 label 값이 첫번째 키의 값과 같고 column 인덱스의 label 값이 두번째 키의 값과 같은 데이터를 찾아서 해당 칸에 넣음.
- 만약 주어진 데이터가 존재하지 않으면 해당 칸에 NaN 값을 넣습니다.
- 첫번째 인수로는 DataFrame을, 두 번째 인수로는 데이터로 사용할 column이름을 세번째 인수로는 row 인덱스로 사용할 column name, 네번째 인수로는 column 인덱스로 사용할 column name을 넣고 그 다음 aggfund 키워드 인자는 기본적으로 평균 값을 구하도록 default 값이 설정 되어 있음.
* pandas.DataFrame.pivot_table과의 차이는 첫번째 인수로 DataFrame을 넣지 않는다.
이 명령어 자체에 DataFrame이 들어가기 떄문에
- row index로 선실 등급을 나타내는 class colum을 column index로 child,man,woman의 분류를 나누는 카테고리 값인 who를 지정 그리고 이떄의 값은 생존 여부를 나타내는 survived column을 사용 aggfunc 키워드 인수를 따로 지정하지 않아서 여기서는 값의 평균을 구함
pd.pivot_table(df,"survived", index="class",columns="who")

- aggfunc 키워드 인수를 여기선 np.sum으로 전달
# aggfunc 키워드
pd.pivot_table(df,values='survived',index='class',
columns='who',aggfunc=np.sum)

- 해당하는 값이 없다면 이는 NaN으로 표현됨. 이 값은 pivot_table()메서드 인자 중 fill_value에 값을 전달하면 해당 값으로 NaN으로 처리
# 해당 하는 값이 없다면
pd.pivot_table(df, values="survived", index="class",
columns="deck", aggfunc=np.mean)
pd.pivot_table(df,values="survived",index="class",
columns="deck",aggfunc=np.mean,fill_value=0)

👇

heatmap
- 데이터셋 중 비교하고자 하는 column의 pair가 모두 카테고리 값이거나, 피봇테이블의 결과를 가지고 heatmap()으로 표현하면 각 column 간의 상관 관계를 색상의 짙고 옅음으로 표현
- cmap을 활용하여 “crest” 테마를 적용
- 짙은 푸른 빛을 띌수록 생존율이 높고 노란 빛에 가까울수록 생존율이 낮음
# heatmap
ttn_cls_who = pd.pivot_table(df,"survived", index="class", columns="who")
sns.heatmap(ttn_cls_who,cmap="crest")

1.annot키워드
- annot 키워드 인수에 True 값을 줘서 각 cell마다 value를 표기
- 동시에 fmt 키워드 인수를 사용해서 cell마다 표기한 value의 포맷을 지정
- linewidth를 명시하여 cell 간의 구분을 더 명확하게 지정
# annot 키워드
sns.heatmap(ttn_cls_who,cmap='mako',annot=True,fmt=".2f",linewidth=.5)
