[파이썬기초] 시계열 데이터 생성하기

2020. 4. 13. 10:48노트/Python : 프로그래밍

 

시계열 데이터 생성

# 시계열 데이터 생성 
import pandas as pd
data_ix = pd.date_range("2020/04/13",periods=5,freq="D") #일

>>>DatetimeIndex(['2020-04-13', '2020-04-14', '2020-04-15', '2020-04-16',
               '2020-04-17'],
              dtype='datetime64[ns]', freq='D')
   
   
data_ix = pd.date_range("2020/04/13",periods=5,freq="M") #월

>>>DatetimeIndex(['2020-04-30', '2020-05-31', '2020-06-30', '2020-07-31',
               '2020-08-31'],
              dtype='datetime64[ns]', freq='M')
       
       
data_ix = pd.date_range("2020/04/13",periods=5,freq="Y") #년

>>>DatetimeIndex(['2020-12-31', '2021-12-31', '2022-12-31', '2023-12-31',
               '2024-12-31'],
              dtype='datetime64[ns]', freq='A-DEC')


data_ix = pd.date_range("2020/04/13",periods=5,freq="H") #시

>>>DatetimeIndex(['2020-04-13 00:00:00', '2020-04-13 01:00:00',
               '2020-04-13 02:00:00', '2020-04-13 03:00:00',
               '2020-04-13 04:00:00'],
              dtype='datetime64[ns]', freq='H')
  • data_range("시작일" , periods= 기간 , freq="단위") 

 

시계열 데이터 보간하기 

 

data_ix2 = pd.date_range("2020/04/01",periods=30,freq="D")

data.reindex(data_ix2)

 

ffill, bfill 메소드

data.reindex(data_ix2, method="ffill") # 마지막 값으로 다음 시점 결측치 보간 

data.reindex(data_ix2, method="bfill") # 첫번째 값으로 이전 시점 결측치 보간 

data.reindex(data_ix2, fill_value=0) # 결측치 0으로 보간

 

interpolate() 함수 

 

예제 데이터 생성 

import pandas as pd
import numpy as np
from datetime import datetime 

dateStr = ["2020/1/13","2020/1/16","2020/1/17","2020/1/20"]
date = pd.to_datetime(dateStr)
date

>>> DatetimeIndex(['2020-01-13', '2020-01-16', '2020-01-17', '2020-01-20'], dtype='datetime64[ns]', freq=None)

ts=pd.Series([1,np.nan,np.nan,10],index=date)
ts

>>> 2020-01-13     1.0
     2020-01-16     NaN
     2020-01-17     NaN
     2020-01-20    10.0
     dtype: float64

 

ts.interpolate() # 선형적으로 비례하여 결측값 보간

>>> 2020-01-13     1.0
     2020-01-16     4.0
     2020-01-17     7.0
     2020-01-20    10.0
     dtype: float64
    
ts.interpolate(method = "time") # 시간을 기준으로 결측값 보간 

>>> 2020-01-13     1.000000
     2020-01-16     4.857143
     2020-01-17     6.142857
     2020-01-20    10.000000
     dtype: float64
    
ts.interpolate(method = "time", limit = 1) # limit : 결측값 제한

>>> 2020-01-13     1.000000
     2020-01-16     4.857143
     2020-01-17          NaN
     2020-01-20    10.000000
     dtype: float64