Python/NumPy

NumPy로 배우는 데이터 분석: 배열 필터링과 수정

임베디드 친구 2025. 10. 17. 21:30
반응형

NumPy로 배우는 데이터 분석: 배열 필터링과 수정

안녕하세요! 오늘은 "소프트웨어 공장"에서 NumPy를 활용한 데이터 분석 기법 중 배열 필터링수정에 대해 다뤄보겠습니다. 데이터 분석을 하다 보면 원하는 조건에 맞는 데이터를 추출하거나 특정 데이터를 수정해야 할 일이 자주 생깁니다. NumPy는 이러한 작업을 빠르고 간편하게 처리할 수 있도록 다양한 기능을 제공합니다.

이 글에서는 다음 내용을 다룹니다:

  1. 배열 필터링의 기본 개념
  2. 조건 기반 필터링 예제
  3. 배열 요소 수정 방법
  4. 응용 예제: 데이터 전처리

자, 그럼 시작해볼까요?


1. 배열 필터링의 기본 개념

배열 필터링은 특정 조건에 따라 배열의 일부 요소를 선택하는 작업입니다. NumPy에서는 Boolean 인덱싱조건 연산자를 활용해 손쉽게 필터링을 수행할 수 있습니다.

예제 코드: Boolean 배열 생성
import numpy as np

# 1부터 10까지의 숫자를 포함한 배열 생성
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# 5보다 큰 값만 필터링
filter_condition = arr > 5
print("필터 조건:", filter_condition)

# 필터 조건을 사용하여 배열 필터링
filtered_arr = arr[filter_condition]
print("필터링된 배열:", filtered_arr)

출력 결과:

필터 조건: [False False False False False  True  True  True  True  True]
필터링된 배열: [ 6  7  8  9 10]

2. 조건 기반 필터링 예제

여러 조건을 결합한 필터링

NumPy는 조건 연산자와 논리 연산자를 조합하여 복잡한 조건을 설정할 수 있습니다.

# 배열 요소 중 3보다 크고 8보다 작은 값만 필터링
filtered_arr = arr[(arr > 3) & (arr < 8)]
print("3보다 크고 8보다 작은 값:", filtered_arr)

출력 결과:

3보다 크고 8보다 작은 값: [4 5 6 7]
np.where를 사용한 필터링

np.where를 사용하면 조건에 따라 값을 선택할 수 있습니다.

# 배열 요소가 짝수인 경우 유지하고, 홀수인 경우 0으로 대체
modified_arr = np.where(arr % 2 == 0, arr, 0)
print("짝수는 유지, 홀수는 0으로:", modified_arr)

출력 결과:

짝수는 유지, 홀수는 0으로: [ 0  2  0  4  0  6  0  8  0 10]

3. 배열 요소 수정 방법

NumPy 배열은 특정 조건에 따라 값을 수정하거나 일괄 변경하는 작업도 간단합니다.

예제 코드: 조건 기반 값 수정
# 배열 요소 중 5보다 큰 값은 99로 수정
arr[arr > 5] = 99
print("수정된 배열:", arr)

출력 결과:

수정된 배열: [ 1  2  3  4  5 99 99 99 99 99]
특정 인덱스 값 수정
# 인덱스 2와 4의 값을 각각 100과 200으로 수정
arr[[2, 4]] = [100, 200]
print("특정 인덱스 값 수정:", arr)

출력 결과:

특정 인덱스 값 수정: [  1   2 100   4 200  99  99  99  99  99]

4. 응용 예제: 데이터 전처리

데이터 분석에서는 결측값을 처리하거나 이상치를 제거하는 등의 전처리 작업이 필수적입니다. NumPy를 사용하면 이러한 작업을 효율적으로 수행할 수 있습니다.

결측값 처리
# 결측값(NaN)이 포함된 배열
data = np.array([1, 2, np.nan, 4, 5, np.nan, 7])

# 결측값(NaN)을 0으로 대체
cleaned_data = np.nan_to_num(data, nan=0)
print("결측값 처리 결과:", cleaned_data)

출력 결과:

결측값 처리 결과: [1. 2. 0. 4. 5. 0. 7.]
이상치 제거
# 이상치가 포함된 데이터
data = np.array([10, 15, 200, 25, 30, -100, 40])

# 0보다 작거나 100보다 큰 값은 제거
filtered_data = data[(data >= 0) & (data <= 100)]
print("이상치 제거 결과:", filtered_data)

출력 결과:

이상치 제거 결과: [10 15 25 30 40]

결론

오늘은 NumPy를 사용해 배열을 필터링하고 수정하는 방법에 대해 알아보았습니다. 데이터 분석 과정에서 이러한 기능은 데이터를 정제하고, 분석을 위한 준비를 하는 데 매우 유용합니다. 특히 조건 기반 필터링과 수정은 복잡한 데이터셋을 다룰 때 필수적인 도구입니다.

반응형