반응형
NumPy로 배우는 데이터 분석: 배열 필터링과 수정
안녕하세요! 오늘은 "소프트웨어 공장"에서 NumPy를 활용한 데이터 분석 기법 중 배열 필터링과 수정에 대해 다뤄보겠습니다. 데이터 분석을 하다 보면 원하는 조건에 맞는 데이터를 추출하거나 특정 데이터를 수정해야 할 일이 자주 생깁니다. NumPy는 이러한 작업을 빠르고 간편하게 처리할 수 있도록 다양한 기능을 제공합니다.
이 글에서는 다음 내용을 다룹니다:
- 배열 필터링의 기본 개념
- 조건 기반 필터링 예제
- 배열 요소 수정 방법
- 응용 예제: 데이터 전처리
자, 그럼 시작해볼까요?
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를 사용해 배열을 필터링하고 수정하는 방법에 대해 알아보았습니다. 데이터 분석 과정에서 이러한 기능은 데이터를 정제하고, 분석을 위한 준비를 하는 데 매우 유용합니다. 특히 조건 기반 필터링과 수정은 복잡한 데이터셋을 다룰 때 필수적인 도구입니다.
반응형
'Python > NumPy' 카테고리의 다른 글
NumPy 배열 파일 저장 및 로드 (save, load, savez) (0) | 2025.10.19 |
---|---|
NumPy 데이터 분석: 데이터 정렬 및 검색 (0) | 2025.10.18 |
NumPy 데이터 분석: 조건에 따른 데이터 선택 (Boolean Indexing) (0) | 2025.10.16 |
NumPy로 배우는 선형대수: 고유값과 고유벡터 (0) | 2025.10.15 |
NumPy 선형대수 기초: 역행렬, 전치행렬, 행렬식 (0) | 2025.10.14 |