파이썬에서 날짜데이터를 다루려면 기본적으로 datetime과 dateutil 라이브러리를 활용해야한다.
from datetime import datetime
from dateutil.parser import parse
만약 날짜로 이루어진 문자열들이 리스트안에 들어있는데 그것을 날짜 형식으로 바꿔주려면
in:
date_str_list = ['2022-05-11' , '2022-06-10','2022-07-03']
for data in date_str_list:
print(parse(data))
out:
2022-05-11 00:00:00
2022-06-10 00:00:00
2022-07-03 00:00:00
이와같은 날짜관련 함수들의 활용법을 아래 3개의 링크를 통해 참고해보자:
dateutil's online documentation
기존의 파이썬 datetime 을 보강하기 위해, 날짜의 array 도 처리할 수 있게 넘파이에서 64-bit 로 처리하도록 라이브러리를 강화했다.
'2022-05-11'이라는 문자열을 넘파이로 날짜데이터 작업이 용이하도록 만들어보자
in:
any_date = np.array('2022-05-11', dtype = np.datetime64)
any_date
out:
numpy.datetime64('2022-05-11')
# 이제 날짜데이터를 작업할 수 있다.
해당 날짜로 부터 열흘 이후의 날짜를 가져올수 있으며,
in:
any_date +10
out:
numpy.datetime64('2022-05-21')
넘파이의 arange 함수를 활용하여 날짜로 이루어진 배열을 만들수있다.
in:
any_date + np.arange(10)
out:
array(['2022-05-11', '2022-05-12', '2022-05-13', '2022-05-14',
'2022-05-15', '2022-05-16', '2022-05-17', '2022-05-18',
'2022-05-19', '2022-05-20'], dtype='datetime64[D]')
넘파이에서 날짜 데이터를 활용할수 있듯이 판다스에서도 날짜 데이터를 다루는 기능을 제공한다.
판다스의 to_datetime 함수를 사용하여 문자열로 이루어진 리스트를 날짜데이터로 활용할수있는 상태로 만들어보자
in:
dates = ['2022-01-04','2022-01-07','2022-01-08','2022-01-22']
dates1 = pd.to_datetime(dates)
dates1
out:
DatetimeIndex(['2022-01-04', '2022-01-07', '2022-01-08', '2022-01-22'], dtype='datetime64[ns]', freq=None)
또한 to_timedelta와 arange함수를 활용하여 날짜의 간격으로 이루어진 배열을 만들수 있다.
in:
pd.to_timedelta(np.arange(10),'D')
out:
TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days', '5 days',
'6 days', '7 days', '8 days', '9 days'],
dtype='timedelta64[ns]', freq=None)
# arange함수 뒤에 'D' 가 들어있는 파라미터 자리에 년,월,주,일,시,분 등 다양한 날짜 및 시간단위를 설정할수 있다.
주 단위:
in:
any_date + pd.to_timedelta(np.arange(10),'W')
out:
DatetimeIndex(['2022-05-11', '2022-05-18', '2022-05-25', '2022-06-01',
'2022-06-08', '2022-06-15', '2022-06-22', '2022-06-29',
'2022-07-06', '2022-07-13'],
dtype='datetime64[ns]', freq=None)
시간 단위:
in:
any_date + pd.to_timedelta(np.arange(10),'h')
out:
DatetimeIndex(['2022-05-11 00:00:00', '2022-05-11 01:00:00',
'2022-05-11 02:00:00', '2022-05-11 03:00:00',
'2022-05-11 04:00:00', '2022-05-11 05:00:00',
'2022-05-11 06:00:00', '2022-05-11 07:00:00',
'2022-05-11 08:00:00', '2022-05-11 09:00:00'],
dtype='datetime64[ns]', freq=None)
이전에 22년 5월 11일을 설정한 변수와 위의 날짜의 간격을 더해주면 해당 날짜부터 설정한 간격을 두고 나타낼수 있다.
in:
any_date + pd.to_timedelta(np.arange(10),'D')
out:
DatetimeIndex(['2022-05-11', '2022-05-12', '2022-05-13', '2022-05-14',
'2022-05-15', '2022-05-16', '2022-05-17', '2022-05-18',
'2022-05-19', '2022-05-20'],
dtype='datetime64[ns]', freq=None)
DatetimeIndex 함수를 사용하여 날짜데이터를 시리즈 및 데이터프레임의 인덱스로 활용할수있다.
in:
dates = ['2022-01-04', '2022-01-07', '2022-01-08', '2022-01-22']
date_index = pd.DatetimeIndex(dates)
df = pd.Series(data=[20000,35000,18000,22000], index=date_index)
df
out:
2022-01-04 20000
2022-01-07 35000
2022-01-08 18000
2022-01-22 22000
dtype: int64
date_range 함수는 시작일과 종료일을 세팅하면 알아서 날짜를 채우도록하는 함수다.
22년 5월 4일 부터 22년 6월 21일까지의 날짜배열을 만들어보자.
in:
pd.date_range('2022-05-04','2022-06-21')
out:
DatetimeIndex(['2022-05-04', '2022-05-05', '2022-05-06', '2022-05-07',
'2022-05-08', '2022-05-09', '2022-05-10', '2022-05-11',
'2022-05-12', '2022-05-13', '2022-05-14', '2022-05-15',
'2022-05-16', '2022-05-17', '2022-05-18', '2022-05-19',
'2022-05-20', '2022-05-21', '2022-05-22', '2022-05-23',
'2022-05-24', '2022-05-25', '2022-05-26', '2022-05-27',
'2022-05-28', '2022-05-29', '2022-05-30', '2022-05-31',
'2022-06-01', '2022-06-02', '2022-06-03', '2022-06-04',
'2022-06-05', '2022-06-06', '2022-06-07', '2022-06-08',
'2022-06-09', '2022-06-10', '2022-06-11', '2022-06-12',
'2022-06-13', '2022-06-14', '2022-06-15', '2022-06-16',
'2022-06-17', '2022-06-18', '2022-06-19', '2022-06-20',
'2022-06-21'],
dtype='datetime64[ns]', freq='D')
date_range에 freq파라미터를 사용하여 간격의 단위를 설정할수있다.
in:
pd.date_range('2022-05-04','2022-06-21', freq='W')
out:
DatetimeIndex(['2022-05-08', '2022-05-15', '2022-05-22', '2022-05-29',
'2022-06-05', '2022-06-12', '2022-06-19'],
dtype='datetime64[ns]', freq='W-SUN')
# 주 간격으로 설정하여 나타내었다.
간격을 설정할수있는 코드를 활용해보자.
판다스의 timedelta_range 함수도 날짜를 나타내는 함수 중 하나다.
in:
pd.timedelta_range(0, periods=10, freq= '2H30T')
out:
TimedeltaIndex(['0 days 00:00:00', '0 days 02:30:00', '0 days 05:00:00',
'0 days 07:30:00', '0 days 10:00:00', '0 days 12:30:00',
'0 days 15:00:00', '0 days 17:30:00', '0 days 20:00:00',
'0 days 22:30:00'],
dtype='timedelta64[ns]', freq='150T')
# 함수는 (시작 시간, 간격수, 간격기준) 으로 이루어져있다.
# freq로 설정한 값인 '2H30T'는 2시간 30분이라는 뜻이다.
freq 파라미터에 일 간격을 뜻하는 'D'를 넣어보자
in:
pd.timedelta_range(0, periods=10, freq= 'D')
out:
TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days', '5 days',
'6 days', '7 days', '8 days', '9 days'],
dtype='timedelta64[ns]', freq='D')
'Python' 카테고리의 다른 글
[파이썬] 영화 추천 시스템 실습: Item-based Collaborative Filtering, pivot_table, corrwith (0) | 2022.05.12 |
---|---|
[파이썬] Alexa 리뷰 실습: Word Cloud, STOPWORDS (0) | 2022.05.10 |
[파이썬] 데이터 분석 실습: 범죄현황 + 구글 맵 API (Geocoding), gmaps.geocode (0) | 2022.05.04 |
[파이썬] 데이터 분석 실습: CCTV설치 (0) | 2022.05.04 |
[파이썬] 데이터 분석 실습: 인구조사 (0) | 2022.05.04 |
댓글