Post

Pandas 데이터 분석: 시계열 데이터 처리 및 분석

시계열 데이터 생성, 날짜 및 시간 데이터 처리, 그리고 시계열 데이터 분석 방법

시계열 데이터는 시간 축에 따라 변화를 관찰하는 데이터로, 금융, IoT, 날씨 분석 등 다양한 분야에서 활용됩니다. Pandas는 시계열 데이터를 다루기 위한 강력한 기능을 제공합니다. 이번 글에서는 시계열 데이터 생성, 날짜 및 시간 데이터 처리, 그리고 시계열 데이터 분석 방법을 다뤄보겠습니다.

1. 시계열 데이터 생성

Pandas는 date_range 함수를 사용해 시계열 데이터를 생성할 수 있습니다.

1) 기본 날짜 범위 생성

1
2
3
4
5
6
7
import pandas as pd

# 날짜 범위 생성
dates = pd.date_range(start="2023-01-01", end="2023-01-10")
print(dates)
# 출력:
# DatetimeIndex(['2023-01-01', '2023-01-02', ..., '2023-01-10'], dtype='datetime64[ns]', freq='D')

2) 특정 간격으로 날짜 생성

1
2
3
4
5
# 월 단위 생성
dates = pd.date_range(start="2023-01-01", periods=5, freq="M")
print(dates)
# 출력:
# DatetimeIndex(['2023-01-31', '2023-02-28', ..., '2023-05-31'], dtype='datetime64[ns]', freq='M')

2. 날짜 및 시간 데이터 처리

Pandas는 datetime 형식의 데이터를 처리하는 기능을 제공합니다.

1) 날짜 데이터를 인덱스로 설정

예제

1
2
3
4
5
6
7
8
9
10
11
# 데이터프레임 생성
data = {"Value": [100, 200, 300, 400, 500]}
df = pd.DataFrame(data, index=pd.date_range("2023-01-01", periods=5))
print(df)
# 출력:
#             Value
# 2023-01-01    100
# 2023-01-02    200
# 2023-01-03    300
# 2023-01-04    400
# 2023-01-05    500
2) 날짜 형식 변환

to_datetime() 함수를 사용하여 문자열을 날짜 형식으로 변환할 수 있습니다.

예제

1
2
3
4
5
6
7
8
# 문자열을 날짜로 변환
df = pd.DataFrame({"Date": ["2023-01-01", "2023-01-02"], "Value": [10, 20]})
df["Date"] = pd.to_datetime(df["Date"])
print(df)
# 출력:
#         Date  Value
# 0 2023-01-01     10
# 1 2023-01-02     20
3) 날짜 구성 요소 추출

Pandas는 날짜 데이터에서 연도, 월, 일 등의 구성 요소를 쉽게 추출할 수 있습니다.

예제

1
2
3
4
5
6
7
8
df["Year"] = df["Date"].dt.year
df["Month"] = df["Date"].dt.month
df["Day"] = df["Date"].dt.day
print(df)
# 출력:
#         Date  Value  Year  Month  Day
# 0 2023-01-01     10  2023      1    1
# 1 2023-01-02     20  2023      1    2

3. 시계열 데이터 분석

1) 리샘플링(Resampling)

리샘플링은 시계열 데이터를 새로운 시간 간격으로 변환하는 작업입니다.

1. 다운샘플링 (큰 간격으로 요약)

1
2
3
4
5
6
# 일별 데이터를 월별로 요약
monthly = df.resample("M").sum()
print(monthly)
# 출력:
#             Value
# 2023-01-31     30

2. 업샘플링 (세부 간격으로 변환)

1
2
3
# 일별 데이터를 시간별로 업샘플링
hourly = df.resample("H").ffill()  # 이전 값을 채워 넣음
print(hourly)
2) 이동 평균(Moving Average)

이동 평균은 특정 시간 범위의 평균을 계산하여 시계열 데이터의 변동성을 부드럽게 만듭니다.

예제

1
2
3
4
5
6
7
8
# 3일 이동 평균
df["Moving_Avg"] = df["Value"].rolling(window=3).mean()
print(df)
# 출력:
#         Date  Value  Moving_Avg
# 0 2023-01-01     10         NaN
# 1 2023-01-02     20         NaN
# 2 2023-01-03     30        20.0
3) 시계열 데이터 시각화

시계열 데이터는 그래프를 통해 시간에 따른 변화를 시각적으로 분석할 수 있습니다.

예제

1
2
3
4
5
import matplotlib.pyplot as plt

# 데이터 시각화
df.plot(x="Date", y="Value", kind="line", title="Time Series Data")
plt.show()

4. 시계열 데이터 처리 팁

  1. 정렬 유지
    • 시계열 데이터는 시간 순서로 정렬되어 있어야 분석에 유리합니다.
  2. 결측치 처리
    • 결측치는 리샘플링이나 업샘플링 시 발생할 수 있습니다. fillna() 또는 ffill()로 적절히 대체하세요.
  3. 적절한 리샘플링 간격
    • 분석 목적에 따라 적절한 시간 간격(일별, 월별 등)을 설정하세요.

정리

  • Pandas는 시계열 데이터를 생성, 처리, 분석할 수 있는 강력한 도구를 제공합니다.
  • 날짜 데이터를 효율적으로 처리하고 리샘플링, 이동 평균 등을 통해 시계열 데이터의 패턴을 파악할 수 있습니다.
  • 시각화를 통해 데이터를 직관적으로 이해할 수 있습니다.

다음 글 예고:
이제 Pandas 학습을 마무리하며, 데이터 분석 실전에서 자주 사용하는 “고급 데이터 조작 기법”을 다뤄보겠습니다!

This post is licensed under CC BY 4.0 by the author.