확산은 데이터 포인트들이 얼마나 서로 떨어져 있는지를 나타낸다. 데이터가 얼마나 흩어져 있는지를 측정하여 데이터 세트의 변동성을 파악할 수 있다.
평균과의 거리 계산
dists = scores - np.mean(scores)
[25.56, 5.11, 13.78, ..., -9.58, -5.57, -0.05]
제곱된 거리 계산
sq_dists = dists ** 2
[653.50, 26.06, 189.99, ..., 91.78, 31.03, 0.003]
제곱된 거리의 합 계산
sum_sq_dists = np.sum(sq_dists)
22856.10
분산 계산
variance = sum_sq_dists / (len(scores) - 1)
230.87
np.var(data, ddof=1)
를 사용하여 쉽게 계산할 수 있다.np.std(data, ddof=1)
또는 np.sqrt(np.var(data, ddof=1))
를 사용하여 계산할 수 있다.np.std(data, ddof=1)
np.sqrt(np.var(data, ddof=1))
np.mean(np.abs(data - np.mean(data)))
표준 편차와의 차이점
- 표준 편차는 각 데이터 포인트와 평균 간의 거리를 제곱하여 계산하므로, 거리가 멀수록 더 크게 가중치를 부여한다.
- 평균 절대 편차는 모든 거리를 동등하게 취급한다.
- 어느 쪽이 '더 나은' 방법이라고 할 수 없으며, 사용하는 상황에 따라 적절한 방법을 선택해야 한다.
- 표준 편차는 더 일반적으로 사용되며, 특히 정규 분포와 같이 분포가 종 모양일 때 유용하다.
np.quantile(data, q)
함수를 사용하여 계산할 수 있다. 여기서 q
는 원하는 분위수를 나타낸다.np.quantile(data, 0.5)
는 데이터의 중앙값(50번째 백분위수)을 계산한다.np.quantile(data, [0, 0.25, 0.5, 0.75, 1])
np.linspace()
를 사용한 분위수 계산np.linspace(start, stop, num)
를 사용하여 일정한 간격의 분위수를 계산할 수 있다.np.quantile(data, np.linspace(0, 1, 5))
는 0부터 시작하여 1에서 끝나며, 5개의 동일한 간격으로 데이터를 나눈다.quantile은 데이터의 전반적인 분포와 위치를 파악하는 데 유용하며, 특히 데이터의 극단값이나 전반적인 경향을 이해하는 데 도움이 된다.
np.quantile(data, 0.75) - np.quantile(data, 0.25)
를 사용하여 계산할 수 있다.iqr
함수를 사용할 수도 있다.from scipy.stats import iqr
iqr_value = iqr(data)
이상치는 다른 데이터 포인트들과 상당히 다른 값을 가진 데이터다.
from scipy.stats import iqr
iqr_value = iqr(data)
lower = np.quantile(data, 0.25) - 1.5 * iqr_value
upper = np.quantile(data, 0.75) + 1.5 * iqr_value
outliers = data[(data < lower) | (data > upper)]
데이터프레임의 하위 집합을 지정하여 이상치를 추출할 수 있다.
Pandas 데이터프레임의 describe()
메서드를 사용하여 데이터에 대한 일반적인 이해를 얻을 수 있다.
data.describe()