파이썬/판다스

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

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

 

데이터 시각화 위한 다양한 그래프와 구체적인 파라미터를 살펴본다.

 

1. pie 파이차트

 

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 히스토그램 히스토플랏

 
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 정식으로 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 박스플랏

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'

 
 

데이터 시각화 파이썬 데이터분석