[pandas] 시계열1 - 자료구조와 색인, 빈도, 이동

Bpius·2023년 5월 28일
0
post-thumbnail

데이터 분석을 할 때 시간을 담당하는 시계열 데이터는 특정 순간의 시간(타임스탬프), 1월 혹은 어느 해의 전체 고정된 기간, 타임스탬프로 표시되는 시간들 사이의 간격 등을 다루게 된다.

datetime

파이썬 라이브러리 datetime은 시계열을 다룰 수 있도록 해준다.

자료구조

from datetime import datetime

현재의 시간을 알려주기도 하며
시간을 계산할 수 있는 있는데, 다음과 같이 특정 시기로부터 현재까지의 시간의 길이를 반환해 주기도 한다.

문자열로 변환도 가능하다.

datetime 포멧

%Y는 4자리 연도 %y는 2자리 연도 등의 datetime 포멧 규칙은 아래와 같은데, 파이썬의 'datetime - 기본 날짜와 시간 형'을 참조하면 더 자세한 내용을 확인 할 수 있다.

많이 사용하는 포멧 규칙

%Y : 4자리 연도(01, 02...)
%y : 2자리 연도(2001, 2002...)
%m : 2자리 월(01, 02...)
%d : 2자리 일(01, 11...)
%H : 24시간 형식(19, 20, 21...)
%I : 12시간 형식(11, 12, 01...)
%M : 2자리 분(01, 02, 55...)
%S : 2자리 초(21, 22, 23...)
%F : 축약식(%F = %Y-%m-%d)

하나씩 지정할 수 있지만 평소에 많이 쓰는 축약식으로도 쓰인다.

strftime이 날짜 형식을 문자로 바꾼 것이라면, strptime로 문자로 지정된 날짜 형식을 datetime 형식으로 바꿀 수도 있다.

to_datetime 형식도 지원한다.

시간을 색인할 수도 있다.

색인

시계열 데이터는 기본적으로 연대순으로 정렬되기 때문에 생성이나 색인을 할 때 유용하게 사용된다.
2022년을 Series로 만들고 색인을 살펴보자.
'Freq: D'는 달력상의 '일'을 빈도로 나타낸다.

특정월을 색인하려면 년도와 월을 주면 된다.

기간을 설정하여 색인을 할 수도 있다.

날짜 범위 생성 및 빈도

date_range

date_range는 일별 타임스탬프를 생성한다.
시작 날짜과 마지막 날짜 주면 된다.

시작일 혹은 마지막 날짜를 지정하고 periods(기간)을 설정하여 생성할 수도 있다.

freq

지금까지 빈도는 'D' 달력상의 일을 기준으로 생성되었기 때었기 때문에 '일(day)'을 빈도로 생성되었다.
빈도를 바꾸어서 날짜를 생성할 수 있다. freq='W-MON'은 매주 '월요일'을 빈도로 잡아서 2022/5/24 이전의 '월요일'을 20만큼 반환해준다.

조금 더 작은 단위 시, 분, 초로도 생성할 수 있다. h(시), t(분), s(초)를 나타낸다.

합쳐서 나타낼 수도 있는데, freq는 제일 작은 단위를 기준으로 계산을 하는데 아래는 freq='9050S'로 's(초)'를 빈도로 해석했음을 알 수 있다.

마찬가지로 아래의 빈도는 상황에 따라서 합쳐서 사용할 수 있다.
빈도(freq)는 파다스 공식 홈페이지: Time series에서 좀 더 자세하게 확인할 수 있다.

shift(이동)

shift는 데이터의 날짜를 이동시켜 주는 기능을 한다. 아래와 같이 shift를 범위 2만큼 이동했음을 알 수 있다.

datetime, Timestamp 타입의 데이터를 로우(인덱스)로 지정하면 '값'이 이동되고, 이동되어 빈 곳은 NaN값이 자리잡게 된다.

profile
데이터 굽는 타자기

0개의 댓글