집계와 통계
NumPy는 배열의 데이터를 요약하는 다양한 집계(Aggregation) 함수를 제공합니다. 축(axis) 개념을 이해하면 행 방향, 열 방향, 또는 전체에 대해 유연하게 통계량을 계산할 수 있습니다.학습 목표
- 축(axis) 개념을 이해하고 원하는 방향으로 집계할 수 있다
- 기술통계 함수(mean, std, median 등)를 활용할 수 있다
- 누적 연산(cumsum, cumprod)을 수행할 수 있다
- 결측치(NaN)를 안전하게 처리하는 집계 함수를 사용할 수 있다
왜 중요한가
데이터 분석의 첫 단계는 데이터의 분포와 경향을 파악하는 것입니다. 피처별 평균, 표준편차, 최솟값, 최댓값을 계산하면 데이터의 스케일과 분포 특성을 빠르게 이해할 수 있습니다. 이 정보는 전처리 전략(스케일링, 정규화)과 이상치 탐지의 기초가 됩니다.축(axis) 이해
| axis 값 | 집계 방향 | 제거되는 차원 | 2D 배열 결과 |
|---|---|---|---|
None | 전체 | 모든 차원 | 스칼라 |
0 | 행 방향 (위→아래) | 행 차원 | 1D (열 수만큼) |
1 | 열 방향 (왼→오른) | 열 차원 | 1D (행 수만큼) |
기본 집계 함수
기술통계 함수
| 함수 | 설명 | 용도 |
|---|---|---|
np.mean() | 산술 평균 | 중심 경향 |
np.median() | 중앙값 | 이상치에 강건한 중심값 |
np.var() | 분산 | 산포도 측정 |
np.std() | 표준편차 | 산포도 (평균과 동일 단위) |
np.percentile() | 백분위수 | 분포 위치 파악 |
np.ptp() | 범위(max-min) | 데이터 폭 |
누적 연산
NaN 안전 함수
실제 데이터에는 결측치(NaN)가 포함된 경우가 많습니다. 일반 집계 함수는 NaN이 하나라도 있으면 결과가 NaN이 됩니다.| 일반 함수 | NaN 안전 함수 | 동작 |
|---|---|---|
np.mean() | np.nanmean() | NaN 제외 후 평균 |
np.sum() | np.nansum() | NaN 제외 후 합계 |
np.std() | np.nanstd() | NaN 제외 후 표준편차 |
np.min() | np.nanmin() | NaN 제외 후 최솟값 |
np.max() | np.nanmax() | NaN 제외 후 최댓값 |
AI/ML에서의 활용
- 피처 스케일링: 각 피처의
mean(axis=0)과std(axis=0)을 구해 Z-score 정규화를 수행합니다 - 모델 평가: 교차 검증 결과의 평균과 표준편차로 모델 성능을 요약합니다
- 배치 통계: 배치 정규화에서
axis=0집계로 배치 내 통계를 계산합니다 - 이상치 탐지: IQR(사분위 범위)을 계산하여 이상치 경계를 설정합니다
np.std()의 ddof 파라미터는 무엇인가요?
np.std()의 ddof 파라미터는 무엇인가요?
ddof(Delta Degrees of Freedom)는 자유도 보정값입니다. ddof=0(기본값)은 모표준편차, ddof=1은 표본표준편차를 계산합니다. Pandas의 .std()는 ddof=1이 기본값이므로, NumPy와 Pandas의 표준편차 결과가 다를 수 있습니다.keepdims 파라미터는 언제 사용하나요?
keepdims 파라미터는 언제 사용하나요?
keepdims=True를 설정하면 집계 후에도 차원 수가 유지됩니다. 브로드캐스팅과 함께 사용할 때 유용합니다. 예: mean = arr.mean(axis=0, keepdims=True)로 하면 원본 배열에서 바로 빼기 연산이 가능합니다.체크리스트
- axis=0, axis=1, axis=None의 차이를 설명할 수 있다
- mean, median, std, percentile을 활용하여 데이터를 요약할 수 있다
- argmin, argmax로 최솟값/최댓값의 위치를 찾을 수 있다
- NaN이 포함된 데이터에서 nanmean, nanstd 등을 적절히 사용할 수 있다
- keepdims를 활용하여 브로드캐스팅 호환성을 유지할 수 있다

