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. 시계열 데이터 처리 팁
- 정렬 유지
- 시계열 데이터는 시간 순서로 정렬되어 있어야 분석에 유리합니다.
- 결측치 처리
- 결측치는 리샘플링이나 업샘플링 시 발생할 수 있습니다.
fillna()
또는ffill()
로 적절히 대체하세요.
- 결측치는 리샘플링이나 업샘플링 시 발생할 수 있습니다.
- 적절한 리샘플링 간격
- 분석 목적에 따라 적절한 시간 간격(일별, 월별 등)을 설정하세요.
정리
- Pandas는 시계열 데이터를 생성, 처리, 분석할 수 있는 강력한 도구를 제공합니다.
- 날짜 데이터를 효율적으로 처리하고 리샘플링, 이동 평균 등을 통해 시계열 데이터의 패턴을 파악할 수 있습니다.
- 시각화를 통해 데이터를 직관적으로 이해할 수 있습니다.
다음 글 예고:
이제 Pandas 학습을 마무리하며, 데이터 분석 실전에서 자주 사용하는 “고급 데이터 조작 기법”을 다뤄보겠습니다!
This post is licensed under CC BY 4.0 by the author.