Post

NumPy 데이터 분석: 실전 활용 사례

NumPy를 활용하여 데이터를 분석하는 몇 가지 실전 사례

NumPy는 다양한 데이터 분석 작업에서 핵심적인 역할을 합니다. 이번 글에서는 NumPy를 활용하여 데이터를 분석하는 몇 가지 실전 사례를 살펴보겠습니다. 이를 통해 NumPy의 강력함을 직접 체감할 수 있습니다.

1. 배열 데이터 통계 분석

1) 기본 통계 계산

NumPy를 사용하면 데이터의 기본 통계값을 빠르게 계산할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np

# 데이터 배열 생성
data = np.array([15, 20, 35, 40, 50])

# 평균
mean = np.mean(data)
print(f"평균: {mean}")  # 출력: 평균: 32.0

# 중앙값
median = np.median(data)
print(f"중앙값: {median}")  # 출력: 중앙값: 35.0

# 표준편차
std_dev = np.std(data)
print(f"표준편차: {std_dev}")  # 출력: 표준편차: 12.65
2) 이상치 탐지

분포를 기준으로 데이터의 이상치를 탐지합니다.

1
2
3
4
5
6
7
8
9
10
# 이상치 탐지 (1.5 * IQR 기준)
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1

lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr

outliers = data[(data < lower_bound) | (data > upper_bound)]
print(f"이상치: {outliers}")  # 출력: 이상치: []

2. 데이터 변환 및 스케일링

1) 데이터 정규화

데이터를 [0, 1] 범위로 스케일링합니다.

1
2
3
4
# 데이터 정규화
normalized_data = (data - np.min(data)) / (np.max(data) - np.min(data))
print(f"정규화된 데이터: {normalized_data}")
# 출력: 정규화된 데이터: [0.  0.125 0.5  0.625 1. ]
2) 데이터 표준화

데이터를 평균 0, 표준편차 1로 변환합니다.

1
2
3
4
# 데이터 표준화
standardized_data = (data - np.mean(data)) / np.std(data)
print(f"표준화된 데이터: {standardized_data}")
# 출력: 표준화된 데이터: [-1.35 -0.95 0.24 0.63 1.43]

3. 시뮬레이션 데이터 생성

NumPy는 시뮬레이션 데이터를 생성할 때 매우 유용합니다.

1) 난수 데이터 생성
1
2
3
4
# 0에서 1 사이의 난수 생성
random_data = np.random.rand(5)
print(f"랜덤 데이터: {random_data}")
# 출력: 랜덤 데이터: [0.324 0.876 0.564 0.123 0.789]
2) 정규분포 데이터 생성
1
2
3
4
# 평균 0, 표준편차 1의 정규분포 데이터 생성
normal_data = np.random.normal(0, 1, size=5)
print(f"정규분포 데이터: {normal_data}")
# 출력: 정규분포 데이터: [-0.45 1.23 -0.76 0.34 0.98]

4. 배열 데이터 조작

1) 배열 합치기와 분리
1
2
3
4
5
6
7
8
9
10
11
12
13
# 배열 생성
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 배열 합치기
combined = np.concatenate((arr1, arr2))
print(f"합쳐진 배열: {combined}")
# 출력: 합쳐진 배열: [1 2 3 4 5 6]

# 배열 분리
split = np.array_split(combined, 3)
print(f"분리된 배열: {split}")
# 출력: 분리된 배열: [array([1, 2]), array([3, 4]), array([5, 6])]
2) 배열 정렬
1
2
3
4
# 배열 정렬
sorted_data = np.sort(data)
print(f"정렬된 데이터: {sorted_data}")
# 출력: 정렬된 데이터: [15 20 35 40 50]

5. 간단한 선형 회귀 구현

NumPy를 사용하여 간단한 선형 회귀 모델을 구현합니다.

1
2
3
4
5
6
7
8
9
10
# 데이터 생성
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# 선형 회귀 계산
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y, rcond=None)[0]

print(f"기울기: {m}, 절편: {c}")
# 출력: 기울기: 0.6, 절편: 2.2

정리

  • NumPy는 데이터 분석, 스케일링, 시뮬레이션, 데이터 조작에 유용한 도구를 제공합니다.
  • 이상치 탐지, 정규화, 표준화 등 실전 분석 작업에서 강력한 기능을 수행할 수 있습니다.
  • 간단한 선형 회귀와 같은 모델링 작업에도 활용 가능합니다.
This post is licensed under CC BY 4.0 by the author.