파이썬/판다스

pandas 배우기 3편 데이터시각화: 빅분기 ADP 데이터분석 시험, 파이차트, 히스토그램, 박스플랏, 스케터플랏,히트맵

Olivia-BlackCherry 2024. 11. 7. 07:52

 
 
1. pie 파이차트
< data2 >

1) 단일 파이차트
autopct, startangle, legend, loc

claim = data2.iloc[:3]
opinion = data2.iloc[3:]

import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5))
plt.pie(claim['percent'], labels=claim['author_ban_status'], autopct='%1.2f%%', startangle=90)
plt.legend(labels=claim['author_ban_status'], loc='best')
plt.show()

 

 
2) subplot 그리기

fig, ax = plt.subplots(1, 2, figsize=(10,5))
ax[0].pie(claim['percent'], labels=claim['author_ban_status'], autopct='%1.1f%%', startangle=90)
ax[0].set_title("Claim")
ax[0].legend(labels=claim['author_ban_status'], loc = 'left')

ax[1].pie(opinion['percent'], labels=claim['author_ban_status'], autopct='%1.1f%%', startangle=90,labeldistance=1.1)
ax[1].legend(labels=claim['author_ban_status'], loc = 'left')
ax[1].set_title("Opinion")
plt.show()

 
 
 
 
2. histplot 히스토그램 히스토플랏
< data >

 
1) sns
sns.histplot(data=?, bins=?, kde=?, color=?)
sns.histplot(data=?, x= ?, hue=?, bins=?, kde=?, color=?)
 
 
kde : 커널 밀도 추정 곡선 - 데이터의 분포를 부드러운 곡선으로 표현, 데이터가 어느 구간에 집중되어 있는지 부드럽게 표현, 밀도 잘 이해하도록 도와줌.

sns.histplot(data=data.video_duration_sec, kde=True)

정식으로 figure 그리고 시작하기
title 붙이기
bins 개수 조절하기

plt.figure(figsize=(10,5))
plt.title("video_druation_sec")
sns.histplot(data=data.video_duration_sec, kde=True, bins=20)
plt.show()

 
 
multiple : 시각적 표현방식 (겹쳐질지 , 나란히 표시될지)
- layer 겹쳐서 (기본값)
- stack 쌓여 (누적)
- fill 백분율로 쌓여
- doge 나란히
 
< multiple='layer'  > 
layer 겹쳐서 (기본값)

plt.figure(figsize=(10,5))
sns.histplot(data=data, x='claim_status', hue='verified_status'
             , multiple='layer')
plt.show()

 
 
< multiple='stack'  >
stack 쌓여 (누적)

plt.figure(figsize=(10,5))
sns.histplot(data=data, x='claim_status', hue='verified_status'
             , multiple='stack')
plt.show()

 
< multiple='fill'  >
fill 백분율로 쌓여

sns.histplot(data=data, x='claim_status', hue='verified_status'
             , multiple='fill')

 
< multiple='dodge'  >
 doge 나란히

plt.figure(figsize=(10,5))
sns.histplot(data=data, x='claim_status', hue='verified_status'
             , multiple='dodge')
plt.show()

 
 
 
shrink : 너비를 줄임 (막대나 kde 곡선이 겹칠 때 시각적으로 구분하기 쉽게 만들어줌)
- 기본값 shrink=1
- 값이 1보다 작을수록 kde 곡선의 너비가 더 좁아짐
- 0.8이면 막대의 너비가 80%로 축소 

sns.histplot(data=data, x='claim_status', hue='verified_status'
             , multiple = 'dodge'
             , shrink = 0.8 )

 
 
< laye 겹침 (왼) / dodge 나란희 (오)  >

 

 
hue : 구분
hue_order = [ 'a', 'b', 'c'] :순서
palette = {key: value, key:value }  색깔
red, green, blue, orange, purple, brown, pink, gray, olive, cyan

sns.histplot(data=data, x='claim_status', 
             hue='author_ban_status', hue_order = ['active', 'under review', 'banned'],
             palette={'active':'green', 'under review': 'yellow', 'banned':'red'},
             multiple='dodge', shrink=0.9)
plt.title('Claime status by author ban status- counts')

 

             palette={'active':'olive', 'under review': 'orange', 'banned':'cyan'}

 
 
 
palette 테마로 설정 = deep, muted, bright, pastel, dark

sns.histplot(data=data, x='claim_status', 
             hue='author_ban_status', hue_order = ['active', 'under review', 'banned'],
             palette = 'pastel',
             multiple='dodge', shrink=0.9)
plt.title('pastel')
plt.show()

 
 

 
 
 
 
 
2) plt
data.hist()

data.video_duration_sec.hist()

 
 
3. boxplot 박스플랏
< data >

sns.boxplot(data=data)
sns.boxplot(x=?, data=data)
sns.boxplot(y=?, data=data)
sns.boxplot(x=?, y=?, data=data)
sns.boxplot(x=?, y=?, hue=?, data=data)

sns.boxplot(data.video_duration_sec)

 
 

plt.figure(figsize=(5,1))
plt.title('video_duration_sec')
sns.boxplot(data.video_duration_sec)
plt.show()

 
 

plt.figure(figsize=(5,1))
plt.title('video_duration_sec')
sns.boxplot(x= data.video_duration_sec)
plt.show()

 

plt.figure(figsize=(5,1))
plt.title('video_duration_sec')
sns.boxplot(y= data.video_duration_sec)
plt.show()

 

plt.figure(figsize=(10,5))
plt.title('video_duration_sec')
sns.boxplot(x= 'claim_status', y='video_duration_sec', data=data)
plt.show()

 

plt.figure(figsize=(10,5))
plt.title('video_duration_sec')
sns.boxplot(x= 'claim_status', y='video_duration_sec', hue='author_ban_status', data=data)
plt.show()

plt.xticks(fontsize=?)
plt.yticks(fontsize=?)

plt.xticks(fontsize=12)

 
 
4. scatterplot 산점도
sns.scatterplot(x=?, y=?, data=?, hue=?, s=?, alpha=?)
s: 크기(marker size)
alpha:투명도

sns.scatterplot(data=data, x='video_view_count', y='video_like_count', hue='claim_status')
sns.scatterplot(data=data, x='video_view_count', y='video_like_count', hue='claim_status', s= 20, alpha=0.5)

 

 
 
 
5. heatmap
상관관계 그래프를 히트맵으로 표현한 경우 많음.
sns.heatmap()

sns.heatmap(data_heatmap.corr(numeric_only = True))

annot= ? 주석
cmap =? 색상
cmap = 'crest'

sns.heatmap(
    data_heatmap.corr(numeric_only = True), 
    annot=True, #주석
    cmap="crest"
    )
plt.title("heatmap")
plt.show()

cmap='viridis'

 
cmap= 'coolwarm'

 
 
6.