[파이썬] pandas 시계열 데이터의 끊어짐 및 누락 처리

pandas는 파이썬에서 가장 인기 있는 데이터 분석 라이브러리 중 하나입니다. pandas는 시계열 데이터를 다루는데 매우 강력한 기능을 제공합니다. 그러나 때로는 시계열 데이터에서 끊어지거나 누락된 부분이 발생할 수 있습니다.

이 블로그 포스트에서는 pandas를 사용하여 시계열 데이터의 끊어짐 및 누락된 값을 어떻게 처리할 수 있는지 알아보겠습니다.

1. 끊어진 데이터 처리하기

시계열 데이터에서 끊어진 부분은 데이터의 연속성을 해칠 수 있습니다. 이런 경우 pandas의 date_range 함수를 사용하여 누락된 날짜를 생성할 수 있습니다. 먼저, date_range 함수로 시작 날짜부터 종료 날짜까지의 날짜 범위를 생성합니다.

import pandas as pd

# 데이터 프레임 생성
df = pd.DataFrame({
  'date': pd.date_range(start='2021-01-01', end='2021-01-10'),
  'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
})

# 끊어진 데이터 생성
df = pd.concat([df.loc[:4], df.loc[6:]], ignore_index=True)

print(df)

출력 결과는 다음과 같아야 합니다.

        date  value
0 2021-01-01      1
1 2021-01-02      2
2 2021-01-03      3
3 2021-01-04      4
4 2021-01-05      5
5 2021-01-07      7
6 2021-01-08      8
7 2021-01-09      9
8 2021-01-10     10

데이터를 살펴보면 2021-01-06 날짜가 빠져있는 것을 알 수 있습니다. 이제 date_range 함수를 사용하여 누락된 날짜를 생성하고, reindex 함수를 사용하여 데이터 프레임을 갱신할 수 있습니다.

# 누락된 날짜 생성
missing_dates = pd.date_range(start=df['date'].min(), end=df['date'].max()).difference(df['date'])
missing_df = pd.DataFrame({'date': missing_dates, 'value': None})

# 데이터 갱신
df = pd.concat([df, missing_df]).sort_values(by='date').reset_index(drop=True)

print(df)

출력 결과는 다음과 같아야 합니다.

        date  value
0 2021-01-01      1
1 2021-01-02      2
2 2021-01-03      3
3 2021-01-04      4
4 2021-01-05      5
5 2021-01-06   None
6 2021-01-07      7
7 2021-01-08      8
8 2021-01-09      9
9 2021-01-10     10

이제 데이터에 누락된 부분이 채워져 데이터의 연속성이 복구되었습니다.

2. 누락된 데이터 처리하기

때로는 시계열 데이터에서 일부 값이 누락된 경우가 있습니다. pandas는 이를 처리하기 위해 fillna 함수를 제공합니다. fillna 함수를 사용하여 누락된 값을 원하는 방식으로 채울 수 있습니다.

예를 들어, 누락된 값을 0으로 채우려면 다음과 같이 코드를 작성할 수 있습니다.

# 누락된 값 0으로 채우기
df['value'].fillna(0, inplace=True)

print(df)

출력 결과는 다음과 같아야 합니다.

        date  value
0 2021-01-01    1.0
1 2021-01-02    2.0
2 2021-01-03    3.0
3 2021-01-04    4.0
4 2021-01-05    5.0
5 2021-01-06    0.0
6 2021-01-07    7.0
7 2021-01-08    8.0
8 2021-01-09    9.0
9 2021-01-10   10.0

이제 데이터의 누락된 값은 모두 0으로 채워졌습니다.

pandas를 사용하여 시계열 데이터의 끊어짐 및 누락된 값을 처리하는 방법을 알아보았습니다. 다양한 상황에서 이러한 방법을 활용하여 데이터를 처리할 수 있습니다. pandas의 강력한 기능을 활용하여 데이터를 분석하고 시각화하는 일에 도움이 되기를 바랍니다.