본문 바로가기
AI/기초_[머신러닝][딥러닝]

[인공지능][기초] 013. 시계열 데이터 처리 기초

by about_IT 2025. 7. 19.
728x90

시계열 데이터는 시간의 흐름에 따라 관측된 데이터를 말합니다. 주식 가격, 기온 변화, 웹사이트 트래픽 등 시간 축을 따라 기록된 수많은 정보들이 여기에 해당합니다.

일반적인 데이터 분석과는 다르게 시계열 데이터는 시간 순서가 매우 중요하며, 분석 방식도 그에 맞게 조정되어야 합니다. 이 글에서는 시계열 데이터의 개념부터 기본 처리 방법까지 초보자 관점에서 쉽게 설명드립니다.

● 시계열 데이터란?

시계열 데이터(Time Series Data)는 일정 간격으로 측정된 연속적인 데이터입니다. 각 데이터 포인트는 고유한 타임스탬프(timestamp)를 가지고 있으며, 시간 순서가 유지되어야 의미 있는 분석이 가능합니다.

예시로는 다음과 같은 데이터가 있습니다:

  • 기상청의 시간별 기온 기록
  • 일별 환율 정보
  • 1분 단위 주식 가격
  • 웹 로그의 접속 시간 기록

● 시계열 데이터의 특징

  • 시간 순서가 매우 중요하다 (과거 → 현재 → 미래)
  • 계절성(seasonality), 추세(trend), 불규칙성(noise) 등의 패턴을 가진다
  • 샘플 간의 간격(시간 단위)이 일정해야 한다

● Pandas에서 시계열 데이터 다루기

Pandas는 시계열 분석에 매우 강력한 기능을 제공합니다. 가장 먼저 해야 할 일은 시간 컬럼을 datetime 타입으로 변환하는 것입니다.

import pandas as pd

# 예시 데이터
df = pd.read_csv('data.csv')

# 'date' 컬럼을 datetime으로 변환
df['date'] = pd.to_datetime(df['date'])

# 인덱스를 시간으로 설정
df.set_index('date', inplace=True)

이제 시간 기준으로 정렬하거나 리샘플링, 이동 평균 계산 등이 가능해집니다.

● 리샘플링 (Resampling)

시계열 데이터를 일별, 주별, 월별 등으로 집계할 수 있습니다.

# 월별 평균 값 계산
monthly_avg = df.resample('M').mean()

# 주별 최대 값 계산
weekly_max = df.resample('W').max()

리샘플링은 시간 단위에 따라 데이터의 밀도를 조정할 수 있어 추세 분석에 유용합니다.

● 이동 평균 (Moving Average)

잡음을 줄이고 추세를 파악하기 위해 이동 평균을 사용합니다.

# 7일 이동 평균
df['rolling_mean'] = df['value'].rolling(window=7).mean()

이렇게 하면 최근 7일간의 평균 값으로 스무딩된 데이터를 얻을 수 있습니다.

● 결측치 처리

시계열 데이터는 센서 오류, 누락 등으로 인해 결측치가 발생할 수 있습니다. 이때는 보간(interpolation)이나 이전 값으로 채우는 방식이 자주 사용됩니다.

# 보간법으로 채우기
df['value'] = df['value'].interpolate()

# 직전 값으로 채우기
df['value'] = df['value'].fillna(method='ffill')

● 시계열 시각화

시계열 데이터는 시각화를 통해 패턴을 파악하기 용이합니다.

import matplotlib.pyplot as plt

df['value'].plot(figsize=(10, 4))
plt.title("Time Series Plot")
plt.xlabel("Date")
plt.ylabel("Value")
plt.show()

● 마무리

시계열 데이터는 일상과 산업 현장에서 매우 자주 마주치는 데이터 유형입니다. 처음부터 시간 데이터를 잘 처리하는 습관을 들여두면, 이후 예측 모델이나 고급 분석에서도 큰 도움이 됩니다.

앞으로는 ARIMA, LSTM 같은 시계열 예측 기법으로도 확장해나갈 수 있으니, 기초를 확실히 다져두시기 바랍니다.


728x90