도찐개찐
[데이터시각화] 05. 파이차트 본문
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
파이 차트
- 파이차트의 경우 부채꼴의 시작은 12시 방향에서 부터 시작해야함
- 하나의 원을 여러 영역 또는 조각으로 나눈 원그래프
- 각 조각은 해당 변수에 대한 관측치 개수 또는 백분율 의미
- 전체 대비 여러 구성 요소 간 관계를 표시하는 데 유용
- 고객 유형별 백분율, 다양한 제품별 매출 백분율, 다양한 국가별 수익
- pie(값, 레이블, 옵션)
# autopct : 부채꼴 않에 백분율 표시
vals = [10, 20, 30, 40]
labels = ['Java', 'Python', 'R', 'C#']
plt.pie(vals, labels=labels, autopct='%d%%', startangle=55)
plt.show()
# exploded : 부채꼴 간의 간격
# shadow : 부채꼴 아래 그림자
explodes = [.3, 0, 0, 0]
plt.pie(vals, labels=labels, autopct='%d%%', explode=explodes, shadow=True)
plt.show()
# exploded : 부채꼴 간의 간격
# shadow : 부채꼴 아래 그림자
piestyles = {'width': .7, 'edgecolor': 'k', 'linewidth': 1.5}
colors = ['red', 'orange', 'yellow', 'green']
explodes = [.3, 0, 0, 0]
plt.pie(vals,
labels=labels,
autopct='%d%%',
explode=explodes,
# shadow=True,
colors=colors,
wedgeprops=piestyles,
)
plt.show()
타이타닉 승객의 성별 시각화(PIE)
titanic = pd.read_csv('../data/titanic.csv')
df = pd.DataFrame(titanic.sex.value_counts())
df['prop'] = df.sex / np.sum(df.sex)
sns.countplot(data=titanic, x='sex')
plt.show()
# counterclock : 그래프 시계방향, 반시계 방향 여부
plt.pie(df['prop'], labels=df.index, autopct='%.1f%%', startangle=90, counterclock=False)
plt.show()
사원들의 직책별 분포 시각화
emps = pd.read_csv('../data/employees.csv')
df = pd.DataFrame(emps['JOB_ID'].value_counts())
df['prop'] = df.JOB_ID / np.sum(df.JOB_ID)
sns.countplot(ebmps, x='JOB_ID')
plt.xticks(rotation='vertical')
plt.show()
plt.pie(df['prop'][:8], labels=df.index[:8], autopct='%.1f%%', startangle=90, counterclock=False)
plt.show()
요일별 교통사고 건수 시각화
fontpath = '/home/bigdata/py39/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/NanumGothic.ttf'
fname = mpl.font_manager.FontProperties(fname=fontpath).get_name()
mpl.rcParams['font.family'] = 'NanumGothic'
mpl.rcParams['font.size'] = 12
mpl.rcParams['axes.unicode_minus'] = False
car = pd.read_csv('../data/car_accient2016.csv')
df = pd.DataFrame(car['요일'].value_counts())
df['prop'] = df.요일 / np.sum(df.요일)
sns.countplot(car, x='요일')
plt.xticks(rotation='vertical')
plt.show()
plt.pie(df['prop'], labels=df.index, autopct='%.1f%%', startangle=90, counterclock=False)
plt.show()
728x90
Comments