๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Python] ํŒŒ์ด์ฌ ๋งทํ”Œ๋กฏ๋ฆฝ(Matplotlib) - ์›ํ˜• ํŒŒ์ด ์ฐจํŠธ(Pie Charts) ๋ณธ๋ฌธ

๐ŸPython/Matplotlib

[Python] ํŒŒ์ด์ฌ ๋งทํ”Œ๋กฏ๋ฆฝ(Matplotlib) - ์›ํ˜• ํŒŒ์ด ์ฐจํŠธ(Pie Charts)

๋ฃจ๋ฆฌ์•ผใ…‘ 2023. 11. 21. 14:18
๋ฐ˜์‘ํ˜•

Matplotlib๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค. ํŒŒ์ด ์ฐจํŠธ๋Š” ๋ฒ”์ฃผ๋ณ„ ๊ฐ’์˜ ์ƒ๋Œ€์ ์ธ ๋น„์œจ์„ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค.

๋จผ์ € ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž„ํฌํŠธ(import) ํ•˜๊ณ  ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ csvํŒŒ์ผ๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
>> df = pd.read_csv('../data/pokemon.csv')
>> df

 

Matplot ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ Pie()  ํ•จ์ˆ˜

๋ฐ์ดํ„ฐ๋ฅผ, ํผ์„ผํ…Œ์ด์ง€๋กœ ๋น„๊ตํ•ด์„œ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

generation_id ๋ณ„๋กœ, ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋ฅผ
ํผ์„ผํ…Œ์ด์ง€๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก, ํŒŒ์ด์ฐจํŠธ๋กœ ๋‚˜ํƒ€๋‚ด๋ณด์ž!

์šฐ์„  generation_id ๋ณ„๋กœ, ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋ฅผ value_counts() ํ•จ์ˆ˜๋กœ ํ™•์ธํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  df2 ๋ณ€์ˆ˜์— ์ €์žฅํ•ด ๋†“๋Š”๋‹ค.

>> df2= df['generation_id'].value_counts()
>> df2
generation_id
5    156
1    151
3    135
4    107
2    100
7     86
6     72
Name: count, dtype: int64

์•„๋ž˜์˜ ์†์„ฑ์„ ํ™œ์šฉํ•ด์„œ ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • lable: ๊ฐ ๋ฐ์ดํ„ฐ์˜ ๋ผ๋ฒจ ์ถ”๊ฐ€
  • autopct :  ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํผ์„ผํŠธ ์ถ”๊ฐ€
  • startanle : ์‹œ์ž‘์  ์„ค์ •
  • wedgeprops : ํŒŒ์ด ์ฐจํŠธ์˜ ์›จ์ง€์˜ ๋„ˆ๋น„๋ฅผ ์กฐ์ ˆ

plt.legend() ํ•จ์ˆ˜๋Š” ๋ฒ”๋ก€๋ฅผ ์ถ”๊ฐ€ ํ•ด์ค€๋‹ค.

>> plt.pie(df2, labels=df2.index, autopct='%.2f', startangle=90, wedgeprops={'width':0.7})
>> plt.legend()
>> plt.title('Generation ID Pie Chart')
>> plt.show()

 

<์˜ˆ์ œ>

generation_id ์ปฌ๋Ÿผ์˜ ๊ฐ’์€ 1๋ถ€ํ„ฐ 7๊นŒ์ง€ ์ด 7๊ฐœ๋กœ
์ƒ์œ„ 4๊ฐœ๋งŒ ํŒŒ์ด์ฐจํŠธ๋กœ ๋‚˜ํƒ€๋‚ด์‹œ์˜ค.

๋จผ์ € generation_id ์ปฌ๋Ÿผ์„ value_counts()๋กœ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ์œ„์—์„œ 4๊ฐœ์˜ ํ–‰๊นŒ์ง€๋งŒ ๋‚˜ํƒ€๋‚ธ๋‹ค.

>> df4=df['generation_id'].value_counts().head(4)
>> df[:3+1]

๋ณ€์ˆ˜ df4 ์— ๋„ฃ๊ณ  ํ™•์ธํ•ด๋ณด๋ฉด ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

>> df4
generation_id
5    156
1    151
3    135
4    107
Name: count, dtype: int64

ํŒŒ์ด ์ฐจํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฒ”๋ก€์™€ ํƒ€์ดํ‹€๋„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด
์•„๋ž˜์™€ ๊ฐ™์€ ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

>> plt.pie(df4, labels=df4.index, autopct='%.2f', startangle=90, wedgeprops={'width':1})
>> plt.legend()
>> plt.title('Type 01 Pie Chart')
>> plt.show()

๋ฐ˜์‘ํ˜•