์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ์น๋์๋ณด๋ ์ ์
- Streamlit๊ธฐ๋ณธ
- ์คํธ๋ฆผ๋ฆฟ
- serverless
- ์๋ฐ
- streamlit
- java
- ํ์ด์ฌ๊ณต๋ถ
- ์น๋์๋ณด๋ ๊ธฐ์ด
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
- Android
- MySQL
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- ์๋ฐ๊ธฐ์ด
- JavaScript
- RESTful API
- ํ๋ค์ค๊ณต๋ถ
- db
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- Pandas
- ์๋ฐ์ด๋ณด
- Streamlit๊ธฐ์ด
- ์๋๋ก์ด๋ ์คํ๋์ค
- Flutter
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ์ด์ฌ
- ํ๋ค์ค
- ์๋ฐ๊ณต๋ถ
- Today
- Total
ruriruriya
[Python] ํ์ด์ฌ ๋งทํ๋กฏ๋ฆฝ(Matplotlib) - ํ์คํ ๊ทธ๋จ(plt.hist()) ๋ณธ๋ฌธ
[Python] ํ์ด์ฌ ๋งทํ๋กฏ๋ฆฝ(Matplotlib) - ํ์คํ ๊ทธ๋จ(plt.hist())
๋ฃจ๋ฆฌ์ผใ 2023. 11. 21. 18:16
matplotlib๋ฅผ ์ฌ์ฉํ์ฌ ํ์คํ ๊ทธ๋จ์ ์์ฑํ๋ ๊ฒ์ ๋ฐ์ดํฐ์ ๋ถํฌ๋ฅผ ์๊ฐํํ๋ ๋ฐ ํจ๊ณผ์ ์ด๋ค. ํ์คํ ๊ทธ๋จ์ ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ์์ ๊ฐ ๊ตฌ๊ฐ(bin)์ ์ํ๋ ๋ฐ์ดํฐ์ ๋น๋๋ฅผ ๋ง๋๋ก ๋ํ๋ธ๋ค.
ํ์คํ ๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํด์ plt.hist() ํจ์๋ฅผ ์ฌ์ฉํ๋ค. ์ด ํจ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ์ ์ ๋ถํฌ๋ฅผ ํํํ๋ค.
ํ์คํ ๊ทธ๋จ์ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ์ ๋ถํฌ๋ฅผ ๋์ผ๋ก ํ์
์ด ๊ฐ๋ฅํ๋ค.
๊ตฌ๊ฐ์ด ์ฌ๋ฌ๊ฐ ์ด๋ฉด bins๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์คํ ๊ทธ๋จ์, ๋๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ ์ฐจํธ ๋ชจ์์ด ์ ํ ๋ค๋ฅด๊ฒ ๋ํ๋ผ ์ ์์ผ๋ฏ๋ก, ํด์์ ์ ํด์ผํ๋ค.
์๋ ๋ฐ์ดํฐ๋ก ํ์คํ ๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์.
>> df = pd.read_csv('../data/pokemon.csv')
>> df
plt.hist() ํจ์
speed ์ปฌ๋ผ์ ์ ๋ณด๋ฅผ ํ์
ํ์ฌ ๊ตฌ๊ฐ์ ์ค์ ํ๊ณ plt.hist() ํ์คํ ๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์.
bin ์์ฑ์ ์์ฐ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก 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
>> plt.hist(data= df, x= 'speed', rwidth=0.8)
>> plt.show()
bins์ ๊ฐฏ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
1. ํ๋ผ๋ฏธํฐ ๊ฐ ๋ณ๊ฒฝ
bins ํ๋ผ๋ฏธํฐ๋ฅผ 20์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด 20๊ฐ๋ก ๊ตฌ๊ฐ์ ์ ํด์ค๋ค.
>> plt.hist(data= df, x= 'speed', rwidth=0.8, bins=20)
>> plt.show()
2. ์ปฌ๋ผ ์กฐ๊ฑด ์ ์ฉํ์ฌ ๋ณ๊ฒฝ
speed๋ฅผ 3๋จ์๋ก, 7๋จ์๋ก, 10๋จ์๋ก ์ต์๊ฐ๋ถํฐ ์ต๋๊ฐ ์ฌ์ด๋ก ์ค์ ํ๋ค.
๋จผ์ ์ต์๊ฐ 5๋ถํฐ ์ต๋๊ฐ 160๊น์ง๋ฅผ 3๋จ์๋ก numpy ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ arange() ํจ์๋ก array ๋ฅผ ์์ฑํ์ฌ ๋ณ์ my_bins์ ๋ฃ๊ณ
bins ์์ฑ์ my_bins ๋ณ์๋ก ํ๋ผ๋ฏธํฐ๋ก ๋ณ๊ฒฝํ๋ค.
>> df['speed'].min()
5
>> df['speed'].max()
160
>> my_bins = np.arange(5,160+3,3) # 5๋ถํฐ 160๊น์ง 3๋จ์ผ๋ก ํฌํจํ๊ฒ ๋ค
>> my_bins
array([ 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41,
44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80,
83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119,
122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158,
161])
>> plt.hist(data= df, x= 'speed', rwidth=0.8, bins=my_bins) # bins ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ
>> plt.show()
๋ค์์ ๊ตฌ๊ฐ์ 10๋จ์๋ก ๋ณ๊ฒฝํ์ฌ ํ์คํ ๊ทธ๋จ์ ๋ง๋ค์ด ์ถ๋ ฅํ๋ค.
>> my_bins=np.arange(5,160+10,10)
>> plt.hist(data= df, x= 'speed', rwidth=0.8, bins=my_bins) # bins ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ
>> plt.show()
ํ๋์ ์ฐจํธ ์์ญ์ ์ฌ๋ฌ๊ฐ์ ์ฐจํธ(plot)์ ๊ทธ๋ฆฌ๊ธฐ
>> plt.figure(figsize=(12,5)) # ์ฐจํธ ์ฌ์ด์ฆ ์กฐ์
>> plt.subplot(1,2,1)
>> plt.title('speed his. bins 3')
>> plt.xlabel('Speed')
>> plt.ylabel('# of Characters')
>> my_bins = np.arange(5,160+3,3)
>> plt.hist(data= df, x= 'speed', rwidth=0.8, bins=my_bins)
>> plt.subplot(1,2,2)
>> plt.title('speed his. bins 10')
>> plt.xlabel('Speed')
>> plt.ylabel('# of Characters')
>> my_bins=np.arange(5,160+10,10)
>> plt.hist(data= df, x= 'speed', rwidth=0.8, bins=my_bins)
>> plt.show() #show๋ ํ๋๋ง ํ๋์์์ญ์ ๋๊ฐ์ ๋น๊ต ์ฐจํธ๊ฐ ๋ณด์ฌ์ง๋ค.