ㅅㅇ

matplotlib_ 02_4 각종 그래프 그리기 _ 파이차트 (Pie Chart) 본문

AI_STUDY/데이터 시각화 Matplotlib Seaborn Pandas

matplotlib_ 02_4 각종 그래프 그리기 _ 파이차트 (Pie Chart)

SO__OS 2022. 6. 16. 20:13
플레이데이터 빅데이터캠프 공부 내용 _ 6/16

Pandas_ 02_4 각종 그래프 그리기 _ 파이차트 (Pie Chart)

1. 파이차트 Pie Chart

- 범주(Category)데이터에서 차지하는 '비율' 을 나타내는데 사용


- pie(x, labels = 대상, ) 
    -  x : 값    (값들을 100을 기준으로 비율을 알아서 계산해 크기 설정)
    - labels : 값들의 label
         - 세번째 매개변수이기에 키워드 인자로 써주기


    - autopct  : 조각내에 표시될 비율의 문자열 형식. '%fmt문자' 
        - fmt문자: f(실수),   d(정수),   %% (%)  

 

- 파이 차트를 좌표평면으로 생각했을 때, 가로인 수직선 x축에서 시작하여, 

  x 에 넣어준 값들의 순서대로 배치된다.

** 넘파이 메소드를 이용한 각 원소별 비율 계산

-- > 이 비율을 시각화한 것이 파이차트

import numpy as np

np.array(counts)/np.sum(counts)
array([0.27272727, 0.09090909, 0.45454545, 0.18181818])

 

 

2. 파이 차트 그리기

<매개변수>

   - x : 값           - labels : 대상 이름

- autopct : 조각내에 표시될 비율의 문자열 형식. '%fmt문자' 

- explode : 시각적으로 위로 뽑아주기 def = 0

- shadow : 시각적으로 그림자 효과

 

- labeldistance : label 의 위치.  0 ~ 1 : 안.    1 ~  : 밖으로 나옴

- pctdistance : pct 글씨의 위치.  0 ~ 1 : 안.    1 ~  : 밖으로 나옴

 

fruits = ['사과', '배', '귤', '딸기']
counts = [30,10,50,20]

plt.pie(counts, # 데이터 값이 담긴 리스트
       labels = fruits, # 대상 label이 담긴 리스트
       autopct = '%.2f%%', # 소수점 두자리 # 값으로 % 쓰기 : % 앞에 써주기 -> %%
       explode = [0.1,0,0.1,0], # 세 번째를 위로뽑기 (def 0 ) 
       labeldistance = 0.4,
        pctdistance = 0.8,
       shadow= True
       )  

plt.show()

 

3. 파이차트 활용  

 

pandas ' 한국 웹브라우저 점유율 ' 데이터 프레임 을  파이차트로 그리기

각 컬럼별(범주) 웹브라우저의 점유율을 시각화 파이차트로 보고 싶다.

 

 

- 전처리

 

** (넘파이)   converters = {컬럼명:타입}  컬럼을 지정한 타입(numpy의 데이터 타입)으로 읽어들인다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 전처리
# date 컬럼이 float 실수 타입이다. object 타입으로 바꿔주기
df = pd.read_excel('data/webbrowser_share.xls', converters = {'date':np.str})

# date는 행의 식별자로 쓰일 수 있기 때문에 또, 분석대상도 아니기에 
# date를 인덱스로 만들어준다.
df.set_index('date', inplace = True)

# 컬럼명 20개 넘어가서 다 안 보임.
pd.options.display.max_columns = 30

 

 

 

- 데이터를 보면 7번째 컬럼부터는 미미한 값임을 알 수 있다.

    = > 7번째 컬럼부터 끝까지는 합하여 기타로 보자. 

           이를 위해 새로운 데이터 프레임을 만들어 줘야 한다.

 

# 0~ 7번째 컬럼 별 데이터 넣기
wb_df = df[df.columns[:7]].copy() 

# 7 번째 ~ 컬럼 데이터를 합하여 넣기
wb_df['기타'] = df[cols[7:]].sum(axis = 1) # 행 별 sum 이기에 axis = 1

 

 

 

-  pie chart 그리기  _   2018.08 월 WB들의 점유율을 pie chart 로 확인해보자.

plt.figure(figsize = (10,10))

plt.pie(wb_df.iloc[0], labels = wb_df.columns,
       autopct = '%.2f%%',
        labeldistance = 1.1,
       pctdistance = 0.9, 
        shadow = True
       )

plt.show()