파이썬 데이터 분석에서 넘파이(NumPy)는 필수적인 라이브러리이다. 특히 대규모 배열 연산과 빠른 수학적 처리를 제공하여 효율적인 데이터 분석을 가능하게 한다. 이번 글에서는 넘파이가 제공하는 통계 처리 함수 중 자주 사용되는 기능을 중심으로 살펴보겠다. 각각의 기능은 코드를 통해 간단히 설명하며, 데이터를 다룰 때 유용한 팁도 함께 제공한다.
합계, 평균, 표준편차 계산
넘파이는 배열의 기본 통계량을 쉽게 계산할 수 있는 함수를 제공한다.
- 합계(sum): 배열의 요소를 모두 더한다.
- 평균(mean): 배열의 평균값을 계산한다.
- 표준편차(std): 데이터의 분포가 평균에서 얼마나 퍼져있는지를 나타낸다.
import numpy as np
data = np.array([1, 2, 3, 4, 5])
print("합계:", np.sum(data)) # 15
print("평균:", np.mean(data)) # 3.0
print("표준편차:", np.std(data)) # 1.414...
위 함수들은 축(axis) 옵션을 지원하므로, 다차원 배열에서도 쉽게 사용할 수 있다.
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print("열 기준 합계:", np.sum(matrix, axis=0)) # [5 7 9]
print("행 기준 평균:", np.mean(matrix, axis=1)) # [2. 5.]
정렬(sort)
데이터 정렬은 분석 과정에서 자주 필요한 작업이다. 넘파이의 sort 함수는 배열을 정렬하며, 기본적으로 오름차순으로 정렬한다.
data = np.array([5, 3, 1, 4, 2])
sorted_data = np.sort(data) # [1, 2, 3, 4, 5]
reverse_sorted_data = np.sort(data)[::-1]
print("오름차순 정렬된 배열:", sorted_data)
print("내림차순 정렬된 배열:", reverse_sorted_data)
# 다차원 배열의 경우 axis를 지정해 특정 축 기준으로 정렬 가능
matrix = np.array([[3, 1, 2], [6, 5, 4]])
print("행 기준 정렬:", np.sort(matrix, axis=1))
인덱스 검색(argmin, argmax)
데이터 분석 시 최소값 또는 최대값의 위치를 찾는 경우가 많다. argmin과 argmax는 각각 최소값과 최대값의 인덱스를 반환한다.
data = np.array([10, 20, 5, 40])
print("최소값 인덱스:", np.argmin(data)) # 2
print("최대값 인덱스:", np.argmax(data)) # 3
다차원 배열에서도 축을 지정해 특정 방향으로 최대/최소값의 인덱스를 찾을 수 있다.
배열 결합
여러 배열을 하나로 합치는 작업은 데이터 전처리에서 자주 사용된다. 넘파이는 배열 결합을 위한 다양한 함수(concatenate, vstack, hstack)을 제공한다.
concatenate를 활용한 배열 결합
concatenate 함수는 축(axis)을 기준으로 배열을 결합한다. 축을 지정하지 않으면 기본값은 axis=0이다.
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
combined = np.concatenate((arr1, arr2))
print("결합된 배열:", combined) # [1, 2, 3, 4, 5, 6]
2차원 배열에서는 축(axis)을 지정해 다양한 형태로 배열을 결합할 수 있다.
import numpy as np
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6]])
# 행 방향 결합
result = np.concatenate((matrix1, matrix2), axis=0)
print("행 결합:\n", result)
# 출력 결과:
# [[1 2]
# [3 4]
# [5 6]]
vstack를 활용한 행 방향 결합
vstack(vertical stack)은 배열을 행 방향(axis=0)으로 쌓는다. 2차원 이상의 배열에서 직관적으로 사용할 수 있다.
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6]])
result = np.vstack((matrix1, matrix2))
print("vstack을 이용한 행 결합:\n", result)
# 출력 결과:
# [[1 2]
# [3 4]
# [5 6]]
hstack를 활용한 열 방향 결합
hstack(horizontal stack)은 배열을 열 방향(axis=1)으로 쌓는다. 열을 추가하거나 데이터를 확장할 때 유용하다.
matrix1 = np.array([[1, 2], [3, 4]])
matrix3 = np.array([[7], [8]])
result = np.hstack((matrix1, matrix3))
print("hstack을 이용한 열 결합:\n", result)
# 출력 결과:
# [[1 2 7]
# [3 4 8]]
- concatenate: 원하는 축을 지정하여 배열 결합.
- vstack: 행 방향으로 배열 결합.
- hstack: 열 방향으로 배열 결합.
이 세 가지 방법을 상황에 맞게 사용하면 배열 결합을 효율적으로 처리할 수 있다.
조건 필터링
데이터에서 특정 조건에 맞는 값을 추출하거나 필터링하는 작업도 간단하게 처리할 수 있다. 넘파이에서는 조건을 활용한 필터링이 매우 직관적이다.
data = np.array([10, 20, 30, 40, 50])
# 30보다 큰 값만 추출
filtered = data[data > 30]
print("필터링된 값:", filtered) # [40 50]
조건 필터링은 다차원 배열에서도 적용 가능하다.
matrix = np.array([[1, 2], [3, 4]])
# 2보다 큰 값만 선택
print("조건 필터링:\n", matrix[matrix > 2]) # [3 4]
요약
넘파이는 데이터 분석과 처리에 유용한 다양한 통계 함수와 배열 조작 기능을 제공한다.이번 글에서 다룬 주요 내용은 다음과 같다:
- 합계, 평균, 표준편차 계산: 데이터의 기본 통계량 계산.
- 정렬: 데이터 정렬.
- 인덱스 검색: 최소/최대값의 위치 탐색.
- 배열 결합: 여러 배열을 하나로 합침.
- 조건 필터링: 조건에 맞는 값 추출.
이러한 기능은 데이터 분석 과정에서 효율적인 데이터 처리와 인사이트 도출을 도와준다. 초보자도 쉽게 사용할 수 있는 함수들로, 간단한 코드로 복잡한 작업을 해결할 수 있다.
'Language > Python' 카테고리의 다른 글
[Python] numpy.random으로 무작위 데이터 생성하기 (0) | 2025.01.31 |
---|---|
[Python] 넘파이(Numpy) 배열 알아보기 (0) | 2025.01.29 |
[Python] 파이썬을 배우면 무엇을 할 수 있을까? 파이썬 대표 라이브러리 알아보기 (6) | 2025.01.24 |
[Python] 파이썬에서 자주 사용하는 내장 함수 정리 (1) | 2025.01.23 |
[Python] 파이썬 연산자 오버로딩 이해하기 (0) | 2025.01.22 |