Python/Time Series with Python

TimeSeries with Python _ Pandas 1 _ DateTime

MINSU KANG 2019. 12. 23. 20:37

 이번 포스팅은 파이썬을 이용해 TimeSeries Data를 본격적으로 다뤄보기 전에, Pandas 및 여러 메소드를 이용해서 DateTime을 어떻게 다루는지 알아보는 포스팅이다

 

파이썬이나 R로 데이터를 다뤄분들은 아시겠지만, 시간을 어떻게 설정하고, 이것을 인덱스로 표현하는데 있어 난감한 경우가 많았다

 

그렇기에 이번 포스팅에서는 파이썬으로 DateTime을 표현하는데 있어서 다양한 방법들과 그것들을 활용하는 방법까지 살펴보는 예제를 포스팅한다

 

 

 
  
#%% datetime, Numpy 그리고 Pandas를 이용해 시간을 표현하는 방법들을 살펴보자

from datetime import datetime
import numpy as np
import pandas as pd
#%% DateTime 모듈을 이용해서 표현하는 방법

my_year = 2020
my_month = 1
my_day = 2
my_hour = 13
my_min = 30
my_sec = 15

my_date = datetime(my_year, my_month, my_day) #년도, 달, 일 까지만 표현

my_date

my_date_time = datetime(my_year, my_month, my_day, my_hour, my_min, my_sec) #년도, 달, 일, 그리고 시간까지 표현

my_date_time

my_date_time.day

#%% Numpy 모듈을 이용해 시간을 표현하는 방법

np.array(['2020-03-15', '2020-03-16', '2020-03-17'], dtype='datetime64')

np.array(['2020-03-15', '2020-03-16', '2020-03-17'], dtype='datetime64[Y]') # 년도 까지만 표현

np.array(['2020-03-15', '2020-03-16', '2020-03-17'], dtype='datetime64[D]') # 일 까지만 표현

np.array(['2020-03-15', '2020-03-16', '2020-03-17'], dtype='datetime64[h]')

np.arange('2018-06-01','2018-06-23',7,dtype='datetime64[D]') #일별 기준으로 2018년 6월 1일부터 7일기준으로 2018년 6월 23일까지 표현

#%% Pandas 모듈을 이용해 시간을 표현하는 방법

pd.date_range('2020-01-01', periods=7, freq='D') #일별 기준으로 2020년 1월 1일부터 7일간 표현

pd.date_range('Jan 01, 2018', periods=7, freq='D')

#%%

pd.to_datetime(['1/2/2018', 'Jan 03, 2018']) #US 스타일

pd.to_datetime(['1/2/2018', '3/1/2018'], format='%d/%m/%Y') #US 스타일

pd.to_datetime(['1--2--2018', '3--1--2018'], format='%d--%m--%Y') #US 스타일, format을 이용해 다양하게 표현된 시간을 정규형식으로 표현 가능하다
#%% Example

data = np.random.randn(3,2)
cols = ['A', 'B']
print(data)

idx = pd.date_range('2020-01-01', periods=3, freq='D')
df= pd.DataFrame(data, index=idx, columns=cols)

df.index.max()

df.index.argmax()

df.index.min()

df.index.argmin()