14) Pie chart(advanced)
14. 원 그래프(심화)
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic' # 글자 폰트
matplotlib.rcParams['font.size'] = 15 # 글자 크기
matplotlib.rcParams['axes.unicode_minus'] = False # 한글 폰트 사용 시, 마이너스 글자가 깨지는 현상을 해결
values = [30, 25, 20, 13, 10, 2]
labels = ['Python', 'Java', 'Javascript', 'C#', 'C/C++', 'ETC']
# colors = ['b', 'g', 'r', 'c', 'm' ,'y']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']
explode = [0.05] * 6
plt.pie(values, labels=labels, autopct='%.1f%%', startangle=90, counterclock=False, colors=colors, explode=explode)
plt.show()
wedgeprops={'width':0.6} # dict type
plt.pie(values, labels=labels, autopct='%.1f%%', startangle=90, counterclock=False, colors=colors, explode=explode, wedgeprops = wedgeprops)
plt.show()
wedgeprops={'width':0.6, 'edgecolor':'w', 'lw':5} # dict type
plt.pie(values, labels=labels, autopct='%.1f%%', startangle=90, counterclock=False, colors=colors, wedgeprops = wedgeprops)
plt.show()
def custom_autopct(pct):
# return ("%.1f%%" % pct) if pct >= 10 else ''
return '{:.0f}%'.format(pct) if pct >= 10 else ''
plt.pie(values, labels=labels, autopct=custom_autopct, startangle=90, counterclock=False, colors=colors, wedgeprops = wedgeprops, pctdistance=0.7)
plt.show()
DataFrame 활용
import pandas as pd
df = pd.read_excel('../Pandas/score.xlsx')
df
지원번호 | 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1번 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
1 | 2번 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
2 | 3번 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
3 | 4번 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
4 | 5번 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
5 | 6번 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
6 | 7번 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
7 | 8번 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
grp = df.groupby('학교')
grp
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000273F60C5AC0>
grp.size()
학교 능남고 3 북산고 5 dtype: int64
values = [grp.size()['북산고'],grp.size()['능남고']] # [5, 3]
labels = ['북산고', '능남고']
plt.pie(values, labels=labels)
plt.title('소속 학교')
plt.show()
댓글남기기