Python๐์ ์ฌ์ฉํ ๊ธฐ๋ณธ ํต๊ณ
10205 ๋จ์ด statisticstutorialpythonbeginners
"ํต๊ณ๋ ๊ณ ์ฑ๋ฅ ๋ฌด๊ธฐ์ ๊ฐ์ต๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ๋์์ด ๋์ง๋ง ์๋ชป ์ฌ์ฉํ๋ฉด ์ฌ์์ด ๋ ์ ์์ต๋๋ค."
ํต๊ณ๋ DNA ๊ฒ์ฌ ๋๋ ์์ด๋ ์ฌ์ฅ๋ณ๊ณผ ๊ฐ์ ์ง๋ณ๊ณผ ๊ด๋ จ๋ ์์ธ ๋๋ ๋ณต๊ถ ๊ฒ์์ ์ด๋ฆฌ์์๊ณผ ๊ฐ์ ๋ง์ ๊ฒ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ํต๊ณ๋ ํฌ๋ฆฌ์ผ์ ํ์จ์์ ๋ฏธ๊ตญ ๋ํต๋ น ์ ๊ฑฐ ์ฌ๋ก ์กฐ์ฌ, ๋ ์จ ์์ธก ํ๋ฅ ์์ ๋ฐ์ดํฐ ๊ณผํ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ด๋ฅด๊ธฐ๊น์ง ์ผ์ ์ํ์ ๋ชจ๋ ๊ณณ์ ์กด์ฌํฉ๋๋ค. ํต๊ณ๋ ๋ฐ์ดํฐ์ ์์ง, ๊ตฌ์ฑ, ๋ถ์, ํด์ ๋ฐ ํํ์ ๋ค๋ฃจ๋ ์ํ์ ํ ๋ถ์ผ์ ๋๋ค.
ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฐพ๋ ๊ธฐ์ ์ธ ๊ธฐ๊ณ ํ์ต์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ์์ ๋ฐ๊ฒฌ๋๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ํน์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ปดํจํฐ๊ฐ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ๋์์ด ๋๋ ํต๊ณ ๋ถ์์ ๋๋ค.
์ด ๊ฒ์๋ฌผ์์๋ Python์ ๋์์ผ๋ก ์ฌ์ฉ๋๋ ํ๊ท , ์ค์๊ฐ, ๋ชจ๋ ๋ฐ ํ์ค ํธ์ฐจ์ ๊ฐ์ ํต๊ณ์ ๊ธฐ๋ณธ ์ฌํญ์ ๋ณผ ๊ฒ์ ๋๋ค.
ํ๊ท
์ฌ๊ธฐ์์ ํ๊ท ์ ์ซ์์ ํ๊ท ์ ์๋ฏธํ๋ฉฐ ์ซ์๋ฅผ ๋ํ๊ณ ์กด์ฌํ๋ ์ด ํญ๋ชฉ ์๋ก ๋๋๋๋ค. ์๋์ ์ฃผ์ด์ง ์ฝ๋.
a=[11,21,34,22,27,11,23,21]
mean = sum(a)/len(a)
print (mean)
๋ค์๊ณผ ๊ฐ์ ์ฝ๋
numpy
๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ท ์ ๊ณ์ฐํ ์๋ ์์ต๋๋ค.import numpy as np
mean = np.mean(a)
print (mean)
์ค์๊ฐ
์ค์๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ๋ฐ์ํ๋ ์ค๊ฐ ์ฉ์ด์ ๋๋ค. ์์ ์๊ฐ ํ์์ธ ๊ฒฝ์ฐ ์ค๊ฐ ํญ์ด๊ณ , ์์ ์๊ฐ ์ง์์ธ ๊ฒฝ์ฐ ์ค๊ฐ์ ์๋ ๋ ํญ์ ํ๊ท ์ ๋๋ค. ์๋์ ์ ๊ณต๋ ๊ตฌํ์์ ์ฌ์ฉ๋ ๋ฐฐ์ด์ ์ด์ ๊ณผ ๋์ผํฉ๋๋ค.
def median(nums):
if len(nums)%2 == 0:
return int(nums[len(nums)//2-1]+nums[len(nums)//2])//2
else:
return nums[len(nums)//2]
print (median(a))
์ค์๊ฐ์ ๊ตฌํ๋ ์ฝ๋
numpy
๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.import numpy as np
print(np.median(a))
๋ฐฉ๋ฒ
๋ชจ๋๋ ์์ ๋ชฉ๋ก์์ ๋น๋๊ฐ ๊ฐ์ฅ ๋์ ์์๋ฅผ ๋ํ๋ ๋๋ค. ๊ฐ์ฅ ๋ง์ด ๋ฐ์ํ๋ ์์์ ๋๋ค. ๋ชจ๋๋ฅผ ์ฐพ๊ธฐ ์ํ ํ์ด์ฌ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
from collections import Counter
data = dict(Counter(a))
mode = [k for k, v in data.items() if v == max(list(data.values()))]
print (mode)
Scipy
์์๋ ๋ฐฐ์ด ๋๋ ์์ ๋ชฉ๋ก์ ๋ชจ๋๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํ ๊ฐ์ง ๋จ์ ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ค ๋ชจ๋์ธ ๊ฒฝ์ฐ์๋ ํ๋์ ์๋ฃจ์
๋ง ์ ๊ณตํ๋ค๋ ๊ฒ์
๋๋ค.from scipy import stats
print (stats.mode(a)[0][0])
์ฌ๋ถ์์
์ฌ๋ถ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ถ๋ถ์ผ๋ก ๋๋๋๋ค. ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ์์์์ 1์ฌ๋ถ์์(Q1), ๋ ๋ฒ์งธ ๋ถ๋ถ์ 1์ฌ๋ถ์์์ 2๋ถ์์(Q2), ์ธ ๋ฒ์งธ ๋ถ๋ถ์ Q2์์ Q3๊น์ง, ๋ค ๋ฒ์งธ ๋ถ๋ถ์ Q3์์ ๋๊น์ง์ ๋๋ค. ์ฌ๋ถ์์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํด์ผ ํฉ๋๋ค. ์ฌ๋ถ์์๋ฅผ ์ฐพ๋ ์ฝ๋๋ ์๋์ ๊ฐ์ผ๋ฉฐ,
median
ํจ์๋ ์์ ์ค์๊ฐ ์น์
์์ ์ฌ์ฉ๋ ํจ์์
๋๋ค.def quartiles(nums):
nums=sorted(nums)
Q1 = median(nums[:len(nums)//2])
Q2 = median(nums)
if len(nums)%2 == 0:
Q3 = median(nums[len(nums)//2:])
else:
Q3 = median(nums[len(nums)//2+1:])
return Q1,Q2,Q3
print (quartiles(a))
ํ์ค ํธ์ฐจ
ํ์คํธ์ฐจ๋ ๋ฐ์ดํฐ์ ์ฐํฌ ๋๋ ํผ์ง์ ์ธก์ ํ ๊ฒ์ ๋๋ค. ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ์ ๋๋ค. ํ์ค ํธ์ฐจ๋ฅผ ์ฐพ๊ธฐ ์ํ ๊ฐ๋จํ ํ์ด์ฌ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
n=len(a)
std=(sum(map(lambda x: (x-sum(a)/n)**2,a))/n )**0.5
print(std)
ํ์ค ํธ์ฐจ๋ฅผ ์ฐพ๋ numpy ํจ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import numpy as np
print (np.std(a))
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Python๐์ ์ฌ์ฉํ ๊ธฐ๋ณธ ํต๊ณ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/amananandrai/basic-statistics-using-python-35l7ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค