⏰ 시계열 환경 설정과 NumPy/Pandas 기초

okorion·2025년 10월 29일
0

1️⃣ 시계열 분석을 위한 환경 세팅

시계열 분석은 연속된 시간의 데이터를 다루기 때문에,
연산 효율성 + 구조적 데이터 관리 능력이 중요하다.
이 두 가지를 가능하게 해주는 핵심 도구가 바로 NumPyPandas다.

pip install numpy pandas matplotlib
  • NumPy: 고속 수치 연산을 위한 배열 기반 라이브러리
  • Pandas: NumPy 기반 데이터프레임(DataFrame) 구조 제공

환경 구성이 끝났다면, Python 코드에서 다음처럼 불러온다.

import numpy as np
import pandas as pd

2️⃣ NumPy 기초 — 데이터 연산의 엔진

(1) NumPy 배열 생성

파이썬 리스트는 유연하지만, 대용량 연산에 비효율적이다.
NumPy는 동일 타입 데이터를 한 번에 처리할 수 있는 ndarray 구조를 제공한다.

mylist = [1, 2, 3]
arr = np.array(mylist)
print(type(arr))  # <class 'numpy.ndarray'>

중첩 리스트로 2D 배열(행렬) 생성

mymatrix = np.array([[1,2,3], [4,5,6], [7,8,9]])
mymatrix.shape  # (3,3)

(2) 기본 배열 생성 함수

함수설명예시
np.arange(start, stop, step)정수 범위 생성np.arange(0,10,2) → [0,2,4,6,8]
np.zeros(shape)0으로 채운 배열np.zeros((3,3))
np.ones(shape)1로 채운 배열np.ones((2,4))
np.linspace(start, stop, num)일정 간격으로 나눈 배열np.linspace(0,10,5)
np.eye(n)단위 행렬 생성np.eye(3)

NumPy의 강점:
배열 전체에 스칼라 연산을 브로드캐스팅 할 수 있다.

arr = np.ones(5)
arr * 10   # [10. 10. 10. 10. 10.]

(3) 난수 생성과 시드 설정

NumPy는 np.random 모듈로 다양한 난수 샘플링을 지원한다.

np.random.rand(3)        # 균등 분포 (0~1)
np.random.randn(3)       # 표준 정규분포 (μ=0, σ=1)
np.random.randint(1, 100, 5)  # 1~99 정수 5개

시드(seed) 설정으로 재현 가능한 결과 확보:

np.random.seed(42)
np.random.rand(3)

(4) 배열의 형태와 통계 연산

arr = np.arange(25)
ranarr = np.random.randint(0, 50, 10)

arr.reshape(5,5)     # 형태 변경
ranarr.max(), ranarr.min()     # 최대·최소값
ranarr.argmax(), ranarr.argmin()  # 인덱스 위치
arr.dtype            # 데이터 타입

3️⃣ NumPy 인덱싱 · 선택 · 조건

(1) 기본 인덱싱 & 슬라이싱

arr = np.arange(0,11)
arr[1:5]      # [1,2,3,4]
arr[:5]       # 처음부터 4까지
arr[5:]       # 5부터 끝까지

NumPy의 슬라이싱은 원본 참조(pass-by-reference) 방식이다.
복사본이 필요하면 .copy()를 사용한다.

slice_arr = arr[0:5]
slice_arr[:] = 99
arr   # 원본도 변경됨
arr_copy = arr.copy()

(2) 2차원 인덱싱

arr_2d = np.array([[5,10,15],
                   [20,25,30],
                   [35,40,45]])

arr_2d[1]       # 두 번째 행
arr_2d[1,1]     # 25
arr_2d[:2,1:]   # [[10,15],[25,30]]

(3) 조건부 선택

arr = np.arange(1,11)
arr[arr > 4]    # [5,6,7,8,9,10]

이는 Pandas의 조건 필터링(df[df['col']>x])과 같은 원리다.


4️⃣ NumPy 연산 및 통계

NumPy는 브로드캐스팅된 연산을 수행한다.

arr = np.arange(0,10)
arr + arr       # 요소별 덧셈
arr * 2         # 스칼라 곱
arr ** 2        # 제곱

0으로 나누기 경고 처리

1 / arr   # 경고 발생, NaN/inf로 대체

(1) 유니버설 함수(Universal Functions)

함수설명예시
np.sqrt(arr)제곱근np.sqrt([4, 9, 16]) → [2., 3., 4.]
np.log(arr)로그np.log([1, e, e**2]) → [0., 1., 2.]
np.sin(arr)사인np.sin([0, π/2, π]) → [0., 1., 0.]
np.exp(arr)지수np.exp([0, 1, 2]) → [1., 2.718..., 7.389...]

(2) 통계 연산

arr = np.arange(1,13).reshape(3,4)
arr.sum()            # 전체 합
arr.mean()           # 평균
arr.sum(axis=0)      # 열별 합
arr.sum(axis=1)      # 행별 합
axis계산 방향결과
0행 기준(세로)각 열의 합
1열 기준(가로)각 행의 합

5️⃣ Pandas 구조의 기반 — NumPy

NumPy는 Pandas의 데이터 구조의 엔진이다.

  • Pandas Series = NumPy 1차원 배열 + 인덱스
  • Pandas DataFrame = 2차원 NumPy 배열 + 컬럼 이름

NumPy 개념을 이해하면 Pandas의 인덱싱, 조건 선택, 브로드캐스팅, 통계 집계 등 모든 동작이 직관적으로 연결된다.


6️⃣ 연습 포인트

  1. np.arange()np.linspace()의 차이를 설명할 수 있는가?
  2. 슬라이싱 후 원본이 변하지 않게 처리하는 방법은?
  3. 난수 생성 시 시드(seed) 설정의 역할은 무엇인가?
  4. axis 개념은 2D 배열에서 어떻게 작동하는가?

✅ 핵심 요약

항목주요 내용
NumPy 핵심 기능배열 생성, 브로드캐스팅, 유니버설 함수, 인덱싱
Pandas 전단계Series/DataFrame은 NumPy 기반
시계열 분석 전 준비고속 연산 + 배열 구조 이해
다음 학습Pandas를 활용한 시계열 인덱스, 리샘플링, 이동평균 등
profile
okorion's Tech Study Blog.

0개의 댓글