Python/Matplotlib

Matplotlib) Histograms(ํžˆ์Šคํ† ๊ทธ๋žจ) ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ

567Rabbit 2024. 4. 15. 18:01

 

- ์ฃผ์–ด์ง„ ๊ฐ ๊ตฌ๊ฐ„ ๋‚ด์— ์œ„์น˜ํ•˜๋Š” ๊ด€์ธก์น˜ ์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค

- ๋นˆ๋„ ๋ถ„ํฌ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค
- ์ผ์ •ํ•œ ํ•ด๋‹น ๊ตฌ๊ฐ„์— ํฌํ•จ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค

- ์ผ์ • ๊ตฌ๊ฐ„์„ bin์ด๋ผ๊ณ  ํ•˜๋ฉฐ ๊ตฌ๊ฐ„์ด ์—ฌ๋Ÿฌ๊ฐœ๋ฉด ๋ณต์ˆ˜ํ˜•์œผ๋กœ bins๋ผ๊ณ  ํ•œ๋‹ค

- ํžˆ์Šคํ† ๊ทธ๋žจ์€ ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  bin์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ ์ฐจํŠธ๋ชจ์–‘์ด ๋‹ฌ๋ผ์ง€๋ฉฐ ํ•ด์„์ด ๋‹ฌ๋ผ์ง„๋‹ค

 

 

 

df

  id species hp attack defense speed
0 1 bulbasaur 45 49 49 45
1 2 ivysaur 60 62 63 60
2 3 venusaur 80 82 83 80
3 4 charmander 39 52 43 65
4 5 charmeleon 58 64 58 80
... ... ... ... ... ... ...
802 803 poipole 67 73 67 73
803 804 naganadel 73 73 73 121
804 805 stakataka 61 131 211 13
805 806 blacephalon 53 127 53 107
806 807 zeraora 88 112 75 143

 

 

plt.hist(data=df,x='speed', rwidth=0.9, bins = 20)
plt.show()

 

# rwidth๋Š” ๋ง‰๋Œ€์˜ ๋„ˆ๋น„๋ฅผ ๋œปํ•˜๋ฉฐ, 0.9๋กœ ์„ค์ •ํ•˜๋ฉด ๋ง‰๋Œ€์˜ ํญ์ด ์ „์ฒด ๊ฐ€๋กœํญ์˜ 90%๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค

# bins์˜ ๊ฐœ์ˆ˜๋Š” ๊ธฐ๋ณธ์ด 10๊ฐœ ๊ตฌ๊ฐ„์ด๋‹ค. ์ด ๊ตฌ๊ฐ„์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

# ๊ตฌ๊ฐ„์˜ ๋ฒ”์œ„๋ฅผ ์ง์ ‘ ์„ค์ •ํ•˜๋ ค๋ฉด, ๋ฐ์ดํ„ฐ์˜ ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’์„ ์•Œ์•„์•ผ ํ•œ๋‹ค

df['speed'].describe()
count    807.000000
mean      65.830235
std       27.736838
min        5.000000
25%       45.000000
50%       65.000000
75%       85.000000
max      160.000000
Name: speed, dtype: float64

 

 

my_bins = np.arange(5,160+5,5)

 

plt.hist(data=df,x='speed', rwidth=0.9, bins = my_bins )
plt.savefig('hist2.png')
plt.show()

 

 

Subplots

-ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค

 

plt.figure( figsize = (12, 5) ,  ) 
# figsize ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ „์ฒด์˜ ์ด ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค. 
# ๋‘ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ๊ฐ€๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ๋„“๊ฒŒ ํ•˜์˜€๋‹ค

plt.subplot(1, 2, 1)
plt.hist(data=df, x='speed', rwidth=0.9 )
plt.title('speed hist. bins 10')
plt.xlabel('Speed')
plt.ylabel('# of Characters')

plt.subplot(1, 2, 2)
plt.title('speed hist. bins 20')
plt.xlabel('Speed')
plt.ylabel('# of Characters')

plt.hist(data=df,x='speed', rwidth=0.9, bins = 20)

plt.show()