programming language/Python

NumPy, Pandas, SciPy에 대한 설명

눈곱만큼도모름 2025. 1. 13. 04:02
728x90
반응형

 

NumPy, Pandas, SciPy에 대한 설명

1. NumPy (Numerical Python)

NumPy는 파이썬에서 수치 계산을 위한 핵심 라이브러리입니다.

주로 다차원 배열 객체(ndarray)를 다루며,

배열을 기반으로 한 수학적 연산을 빠르게 처리할 수 있도록 최적화된 함수들을 제공합니다.

주요 특징

  • 다차원 배열: ndarray 객체를 사용하여 벡터, 행렬 등의 배열을 효율적으로 처리할 수 있습니다.
  • 수학적 함수: 배열의 원소에 대해 벡터화된 수학적 연산을 빠르게 처리할 수 있습니다.
  • 브로드캐스팅: 크기가 다른 배열 간에도 연산이 가능하게 하는 기능입니다.
  • 선형대수 및 난수 생성: 행렬 곱셈, 고유값 계산, 난수 생성 등을 지원합니다.

예시 코드

import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4])

# 배열의 제곱
arr_squared = arr ** 2
print(arr_squared)  # [1 4 9 16]

# 브로드캐스팅 예시
arr2 = np.array([10, 20, 30, 40])
sum_arr = arr + arr2
print(sum_arr)  # [11 22 33 44]

# 행렬 곱셈
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
matrix_product = np.dot(matrix1, matrix2)
print(matrix_product)
    

2. Pandas

Pandas는 데이터 조작 및 분석을 위한 라이브러리로, 주로 표 형식의 데이터를 다룰 때 유용합니다. DataFrameSeries라는 두 가지 주요 데이터 구조를 사용하여 데이터 분석을 간단하고 직관적으로 할 수 있게 해줍니다.

주요 특징

  • DataFrame: 행과 열로 구성된 표 형태의 데이터 구조로, SQL 테이블이나 엑셀 시트와 유사합니다.
  • Series: 1차원 배열로, 주로 하나의 열에 해당하는 데이터 구조입니다.
  • 데이터 조작: 데이터 필터링, 그룹화, 결합, 변환 등의 다양한 기능을 제공합니다.
  • 결측값 처리: 결측값(NaN)을 처리하는 기능이 내장되어 있어 데이터 전처리가 용이합니다.

예시 코드

import pandas as pd

# DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [24, 27, 22],
        'Score': [85, 90, 88]}
df = pd.DataFrame(data)

# 데이터 조회
print(df)

# 특정 열에 접근
print(df['Name'])

# 조건에 맞는 행 필터링
print(df[df['Age'] > 23])

# 열 추가
df['Pass'] = df['Score'] >= 80
print(df)
    

3. SciPy (Scientific Python)

SciPy는 NumPy의 기능을 기반으로, 더 고급 수학적, 과학적 계산을 위한 라이브러리입니다.

수치 해석, 최적화, 신호 처리, 통계 등 다양한 분야에서 사용됩니다. SciPy는 여러 모듈로 구성되어 있으며,

수학적인 문제를 해결하는 데 필요한 많은 함수들을 제공합니다.

주요 특징

  • 최적화: 비선형 최적화, 최소화 문제 등을 해결할 수 있는 함수들.
  • 선형대수: 고급 선형대수 기능 (행렬 분해, 고유값 계산 등).
  • 신호 처리: 필터링, 푸리에 변환, 신호 분석 등의 기능을 제공합니다.
  • 통계: 확률 분포, t-검정, 회귀 분석 등의 통계 기능을 제공합니다.
  • 고급 수학: 미분방정식 해결, 다항식 근 구하기, 수치 적분 등.

예시 코드

import scipy.optimize as opt
import numpy as np

# 간단한 최적화 예시
# f(x) = x^2 + 3x + 2 의 최소값을 찾기
def func(x):
    return x**2 + 3*x + 2

result = opt.minimize(func, 0)  # x=0에서 시작
print(result)

# 선형 방정식 풀기 (Ax = b)
A = np.array([[2, 3], [4, 5]])
b = np.array([5, 11])
x = np.linalg.solve(A, b)
print(x)  # [1. 1.]
    

라이브러리 간 차이점

  • NumPy: 수치 계산을 위한 핵심 라이브러리로 배열 연산, 선형대수, 난수 생성 등 빠른 계산을 지원합니다.
  • Pandas: 주로 표 형식의 데이터를 다루기 위한 라이브러리로, 데이터 전처리 및 분석에 최적화되어 있습니다.
  • SciPy: 고급 수학적, 과학적 계산을 위한 라이브러리로, NumPy와 Pandas에서 제공하는 기본적인 계산을 넘어서 수치 해석, 최적화, 통계 등을 다룹니다.

예시 요약

  • NumPy는 수치 계산의 기본적인 연산을 빠르게 처리합니다.
  • Pandas는 표 형식 데이터를 처리하고 분석하는 데 유용합니다.
  • SciPy는 과학적 계산과 고급 수학적 문제 해결을 위한 추가적인 기능을 제공합니다.

이 세 가지 라이브러리는 데이터 분석 및 과학적 계산에서 중요한 역할을 하며,

함께 사용하면 매우 강력한 데이터 처리 및 분석 도구가 됩니다.

728x90
반응형