๐๐๐ก๐๐๐๐๐
ํต๊ณํ ๊ธฐ์ด ๋ณธ๋ฌธ
[ ๋ชฉ์ฐจ ]
๋ฐ์ดํฐ ๋ถ์์ผ๋ก ํ ์ ์๋ ์ผ
๊ธฐ์ ํต๊ณ/์๊ฐํ : ๋ฐ์ดํฐ ๋ช
ํํ๊ฒ ๋ณด๊ธฐ
์ถ๋ก ํต๊ณ : ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง์ง ๊ทธ ์ฌ์ค์ด ๋ง๋? ํ์ธ
๋จธ์ ๋ฌ๋/๋ฅ๋ฌ๋ : ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋์ด ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ๊ฑฐ๋ ์๋ก์ด ์ ๋ณด ๋์ถ
ํต๊ณํ ๋๊ตฌ
- Excel
- SAS
- R
- Python
์์
์๋ฃํ์ ์ข ๋ฅ
๋ฒ์ฃผํ ์๋ฃ
- ๋ช ๋ชฉํ ์๋ฃ : ์์๊ฐ ์๋ฏธ ์๋ ์๋ฃ (ex : ํ์กํ A, B, O, AB)
- ์์ํ ์๋ฃ : ์์๊ฐ ์๋ฏธ ์๋ ์๋ฃ (ex : ํ์ A, B, C)
์์นํ ์๋ฃ
- ์ด์ฐํ ์๋ฃ : ๋ ๋ฐ์ดํฐ ๊ตฌ๊ฐ์ด ์ ํํ ์๋ฃ (ex : 1๋ช ,2๋ช )
- ์ฐ์ํ ์๋ฃ : ๋ ๋ฐ์ดํฐ ๊ตฌ๊ฐ์ด ๋ฌดํํ ์๋ฃ (ex : ํค 160 ~ 170)
๋ฒ์ฃผํ ์๋ฃ๋ ์ธ๊ฐ์ ์ธ์ด๋ก ํํ๋ ์๋ฃ์ด๊ธฐ ๋๋ฌธ์ ์ปดํจํฐ ํน์ ์์์ ์ ์ฉํ ๋๋ ๋ฐ๋์ ์ซ์ํ์ผ๋ก ๋ณํํ์ฌ ์ ๋ฌํด์ผ ํจ
computer science์์๋ ์ด๋ฅผ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ ์ด์ฉํจ
: ์ธ์ฝ๋ฉ(encoding) : ์ด๋ค ์ ๋ณด๋ฅผ ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ๋ณํํ๋ ๊ฒ
์ค์ฌ๊ฒฝํฅ์น
โฃ ๋ฒ์ฃผํ์ ์์ฝ์ ์ต๋น๊ฐ์ ์ด์ฉํ ์ ์์ (๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ ๊ฐ)
โฃ ์์นํ์ ๊ฒฝ์ฐ ํ๊ท (mean), ์ค์๊ฐ(median)์ด ์ฌ์ฉ
- ํ๊ท
ํ๊ท ์ ์ด์์น์ ๋ฏผ๊ฐํจ
์ด์์น : ๋ฐ์ดํฐ์ ํํ์ ํฌ๊ฒ ๋ฒ์ด๋๋ ๊ฐ์ ์๋ฏธํ๋ฉฐ, ํต๊ณ์ ๋ฐฉ๋ฒ๊ณผ ๋๋ฉ์ธ ์ง์์ ์ฌ์ฉํ์ฌ ์ญ์ ๋ฅผ ๊ณ ๋ คํด๋ณผ ์ ์์ - ์ค์๊ฐ
โฃ ์ผ๋ จ์ ์ซ์๋ฅผ ๊ฐ ์์๋๋ก ์ค ์ธ์ ์ ๋, ๋ฐฑ๋ถ์ 50%์ ํด๋นํ๋ ๊ฐ
โฃ ์ด์๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ์ง๋จ์ ๋ํ์ฑ์ ์ค๋ช ํ ์ ์์
์ฐํฌ๋
โฃ ๋ฐ์ดํฐ์ ํผ์ง ์ ๋๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ
โฃ IQR(Inter Quantile Range) : ๋ฐฑ๋ถ์ ๊ธฐ์ค 75%(Q3)์ ๋ฐฑ๋ถ์ ๊ธฐ์ค 25%(Q1)์ ์ฐจ์ด
- ๋ถ์ฐ
- ํ๊ท ์ ๋ฐ์ดํฐ๊ฐ ํผ์ง ์ ๋
- 10, 20, 30, 40, 50์ ๋ถ์ฐ
```import numpy as np data = [10,20,30,40,50] my_array = np.array(data) np.var(my_array) ''' 200 '''
- ํ๊ท ์ ๋ฐ์ดํฐ๊ฐ ํผ์ง ์ ๋
- ํ์คํธ์ฐจ
- ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ
- ๋ณ๋๊ณ์
- ์๋ก ๊ฐ์ ์ค์ผ์ผ์ด ๋ค๋ฅด๋ฉด ๋ถ์ฐ๋ ๋ฌ๋ผ์ง
- ์ด๋ฅผ ๋ณด์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ๊ฐ1์ ํฌ์คํธ์๋ 14142, ๊ฐ2์ ํ์คํธ์ฐจ๋ 14
- ๋์ ๊ฐ ์ค์ผ์ผ์ด ๋ฌ๋ผ ์ผ์ด๋๋ ๋ฌธ์ ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํ ๋ณ๋๊ณ์
- ๊ฐ 1์ ๋ณ๋๊ณ์
- ๊ฐ 2์ ๋ณ๋๊ณ์
- ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ
Numpy ๋ชจ๋
- numpy๋ ๋ค์ฐจ์ ๋ฐฐ์ด์(ex: ํ๋ ฌ) ์ฝ๊ฒ ์ฒ๋ฆฌํด์ฃผ๋ ๋ชจ๋ ์ค ํ๋
- ํนํ ํต๊ณํ ๋ฐ ๋ฐ์ดํฐ์ฌ์ด์ธ์ค์์๋ "์ ํ๋์"๋ผ๋ ํ๋ฌธ์ ํ๊ตฌํ ๋ ์ฌ์ฉ
- python์ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ์์ฑ๊ณผ ํจ์จ์ฑ์ ๊ตํํ ์ธ์ด, ์๋๊ฐ ๋๋ฆฐ ์ ์ ๋ณด์ํ์ฌ ์ํ์ ๊ณ์ฐ์ numpy๋ฅผ ์์ฃผ ํ์ฉ
- pandas์ ๊ธฐ๋ฐ ์ธ์ด๊ฐ numpy์ด๊ธฐ ๋๋ฌธ์ ์๋ก ํธํ๋๋ ํจ์/๋ฉ์๋๊ฐ ๋ง์
์์ฃผ ์ฐ๋ ํจ์
numpy
โ
โโโ ๊ธฐ๋ณธ ํต๊ณ ํจ์
โ โโโ mean() # ๋ฐ์ดํฐ์ ํ๊ท ๊ฐ ๊ณ์ฐ
โ โโโ median() # ๋ฐ์ดํฐ์ ์ค์๊ฐ ๊ณ์ฐ
โ โโโ std() # ๋ฐ์ดํฐ์ ํ์คํธ์ฐจ ๊ณ์ฐ
โ โโโ var() # ๋ฐ์ดํฐ์ ๋ถ์ฐ ๊ณ์ฐ
โ โโโ sum() # ๋ฐ์ดํฐ์ ํฉ๊ณ ๊ณ์ฐ
โ โโโ prod() # ๋ฐ์ดํฐ์ ๊ณฑ ๊ณ์ฐ
โ
โโโ ํผ์ผํ์ผ ๋ฐ ๋ฐฑ๋ถ์ ํจ์
โ โโโ percentile() # ๋ฐ์ดํฐ์ ํน์ ํผ์ผํ์ผ ๊ฐ ๊ณ์ฐ
โ โโโ quantile() # ๋ฐ์ดํฐ์ ํน์ ๋ถ์ ๊ฐ ๊ณ์ฐ
โ
โโโ ์ต์๊ฐ/์ต๋๊ฐ ๊ด๋ จ ํจ์
โ โโโ min() # ๋ฐ์ดํฐ์ ์ต์๊ฐ ๋ฐํ
โ โโโ max() # ๋ฐ์ดํฐ์ ์ต๋๊ฐ ๋ฐํ
โ โโโ argmin() # ์ต์๊ฐ์ ์ธ๋ฑ์ค ๋ฐํ
โ โโโ argmax() # ์ต๋๊ฐ์ ์ธ๋ฑ์ค ๋ฐํ
โ
โโโ ๋ฐ์ดํฐ ์์ฑ ๋ฐ ์ฒ๋ฆฌ ํจ์
โ โโโ histogram() # ๋ฐ์ดํฐ์ ํ์คํ ๊ทธ๋จ ๊ณ์ฐ
โ โโโ unique() # ๋ฐ์ดํฐ์์ ๊ณ ์ ๊ฐ ๋ฐํ
โ โโโ bincount() # ์ ์ ๋ฐฐ์ด์ ๊ฐ์ ๋น๋ ๊ณ์ฐ
โ
โโโ ๋๋ค ๋ฐ์ดํฐ ์์ฑ (ํต๊ณ์ ์คํ ์ ์ฌ์ฉ ๊ฐ๋ฅ)
โ โโโ random.randn() # ํ์ค ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋๋ค ๊ฐ ์์ฑ
โ โโโ random.normal() # ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋๋ค ๊ฐ ์์ฑ
โ โโโ random.randint() # ์ ์ ๋ฒ์์์ ๋๋ค ๊ฐ ์์ฑ
โ โโโ random.choice() # ๋ฐ์ดํฐ์์ ๋๋ค ์ํ ์ถ์ถ
numpy์ ์ฌ์ฉ ์ด์
- arrayํ ์๋ฃํ์ ์ ์ธํ์ฌ ๊ด๋ฆฌ
a. ๋ฆฌ์คํธ์๋ ์กด์ฌํ์ง ์๋ ๊ธฐ์ ํต๊ณ๋ ์ฌ์ฉ ๊ฐ๋ฅ
b. ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ
- 10000๊ฐ์ ๋ฆฌ์คํธ ์์์ ๊ฐ 10์ ๋ํ ๋
# list์ผ๋ก ์ฒ๋ฆฌ import time start = time.time() my_list = [i for i in range(10000000)] for i in range(len(my_list)): my_list[i] = my_list[i] + 10 end = time.time() print(end - start)
# array ์๋ฃํ์ผ๋ก ์ฒ๋ฆฌ import numpy as np start = time.time() np.array(my_list) + 10 end = time.time() print(end-start)
- random ๋ชจ๋์ ์ฌ์ฉํ ์ ์์
- ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ๋ง๋ค์ด ์๋ฎฌ๋ ์ด์
ํ ์ ์์
- ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ๋ง๋ค์ด ์๋ฎฌ๋ ์ด์
ํ ์ ์์
'ํต๊ณํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ค๊ฒ์ ์ ์ฃผ์์ (0) | 2025.01.13 |
---|---|
์๊ด๊ด๊ณ (1) | 2025.01.13 |
์ ์์ฑ๊ฒ์ (0) | 2025.01.10 |
ํต๊ณํ ๊ธฐ์ด 2 (1) | 2025.01.10 |