시계열 데이터를 처리할 때 일정시간 간격이 벌어져있을때 upsampling, downsampling 기법을 이용하여 데이터를 늘리거나 줄인다. 이러한 방법은 pandas.Dataframe에서 resample함수를 이용하여 작업한다.
일단 해당 작업은 index가 datetime형식이여야 지원이 가능하다.
두가지 방법이있는데 다 알아보자
1. 복잡하지만 자세하게 세팅이 가능한 방법
먼저 데이터를 불러읽은다음에 info함수를 사용하여 column들의 정보를 빼온다.
현재 timestamp column은 string 형식이고 index가 아니기때문에 resample 함수를 쓸수가없음
따라서 다음과 같이 datetime으로 변환을 하고, 다시 info함수를 쓰면, 기존의 timestamp column이 datetime형식으로 바뀐걸 볼수가 있다.
이후에 다음과 같이 timestamp column을 index로 설정해주면된다
temp = temp.set_index('timestamp', inplace=False)
2. 간단한 방법
read_csv를 할때 바로 시간형식을 자동으로 선정하여 index로 만들어주는 방법
temp = pd.read_csv('./Data/test.csv', index_col = 'timestamp', parse_dates = True).drop(['date'], axis=1)
자 이제 위의 두가지방법으로 resample할 dataframe을 설정했다면
다음과 같이 resample함수를 이용해서 데이터를 늘리거나 줄일수있다
temp.resample(rule='S')
# rule에는 매초(S) 매시간(H) 매년(A) 등 다양한 시간 분할자를 넣을수가있다.
또한, 데이터를 늘릴경우 여러 행에서 NaN 값이 차지하게 되는데 이때 값을 채우는 방식은 여러가지있다.
backfill -> 구간의 마지막값으로 NaN값을 채운다
nearest -> 구간의 서로 가까운 값으로 NaN값을 채운다
interpolate -> (아마도 제일많이 사용할꺼같은데) 선형모양으로 값을 채우는 방식
'Data > Data Analysis' 카테고리의 다른 글
[Pyspark] UDF 함수에 parameter값 추가 (0) | 2020.05.08 |
---|---|
[SQL] ROW_NUMBER(), LEAD(), LAG() (0) | 2020.04.29 |
[Statistics] 회귀와 예측2 (0) | 2020.03.09 |
[Statistics] 회귀와 예측 (0) | 2020.03.06 |
[Statistics] 통계학3 (0) | 2019.12.27 |