python pandas.date_range <별별정보>
pandas.date_range- pandas 0.23.4 document API Reference
특징
주기를 가지거나 사용자가 특정하는 방식으로 날짜를 생성할 수 있는 함수로 DatetimeIndex 값으로 반환하는데 나중에 series 형태로도 저장이 가능하다. 당연한 이야기지만...실행 조건
start, end, periods, freq 4개 중 반드시 3개 이상을 기입해야한다. 다만 freq 값이 default 'D'로 존재하니 freq를 제외하고 2개를 더 기입하던지 혹은 freq를 포함해 3개를 기입하던지 필요한 데이터를 어떻게 생성하냐에 따라 추구하는 방식이 다를 것 같다.뒤에 예시와 함께 더 자세히 다뤄보도록 하겠다.
변수
start : datetime 형태 혹은 string 형태로 기입하는 장소로 시작할 시점을 적는 곳이다. 당연히 start라는 변수를 기입하지 않고 datetime을 기입했을 때 첫 번째에 해당하는 변수로 자동 인식한다.end : datetime 형태 혹은 string 형태로 기입하는 장소로 끝나는 시각을 적는 곳이다. 이 역시 2번째 datetime 형태로 기입할 경우에 자동 인식이 된다. 물론 1개의 datetime 형태가 있다면 end는 없는 것임이 당연하다.
periods : 몇 개의 주기로 생성할지를 정하는 변수로 정수를 기입한다. 그리고 앞의 start나 end 변수와는 달리 반드시 변수명을 써야한다.
freq : 어떤 형식으로 기입할 것인지 특정 방식을 정하는 변수로 frequency 빈도라고 표현하기도 한다. default는 D(Day)로 설정되어 있으며 이와 관련한 Aliases들이 존재하는데 필자는 특히 많이 사용되는 Offset Aliases를 사용할 것이다. 물론 다른 방식으로도 존재한다는 사실! 잊지말자.
이외에도 다른 pandas 함수에서 freq는 동일한 기준으로 사용되니 사이트에 가서 꼭 확인해보길 권장한다. 몇 개는 알아두면 좋을 것 같다.
Time Series/Date functionality
tz : TimeZone의 약자로 어느 위치에서 시간을 설정할 것인지를 정하는 변수로 default는 자동으로 현재위치에 설정되어있다. 사용방식은 다양한데 가령 'Asia/Hong_Kong', 'Asia/Tokyo' ,'Asia/Shanghai','US/Eastern','Europe/Berlin','Europe/Brussels','Europe/Paris'와 같이
지역/수도와 같이 쓰면 대부분 사용이 가능하다.
다만 이 부분과 관련해 US는 다른 방식을 채택하는 것 같다. 그리고 나만 그런지 모르겠는데 'US/Southern','US/Western','US/Northern'은 실행이 되지않는다는 점이 황당하다.
normalize : start나 end에 기입한 시간대를 자정(0시)으로 바꿔주는 기능으로 평소에는 default=False로 저장되어있지만 True로 바꾸면서 기능을 사용할 수 있다. 그러나 쓸모 없는 기능같은 느낌이 든다.
name : 반환하는 DatetimeIndex의 이름을 설정하는 변수로 default=None이다.
closed : None, left, right 3가지 중 하나를 선택할 수 있는데 수학에서 열림과 닫힘을 생각하면 이해하기 쉽다.
가령 left를 선택하면 [start,end)와 같이 왼쪽을 포함하는 구간으로 간격 설정을 하는 것이고 right를 선택하면 (start,end]와 같이 오른쪽을 포함하는 구간으로 간격을 설정하는 것이다.
default는 None으로 설정되어 있는데 None은 양쪽을 포함하는 형태로 [start, end]와 같이 이해하면 쉽다.
그러나 아무래도 이 변수도 굳이 만들었어야했나라는 생각이 드는 변수로 어차피 양쪽 다 포함하는 None이 대부분일 것이라 많이 쓰일 것 같지 않다.
예시 순서
0. 최소 실행 조건1. start
2. end
3. periods
4. freq
5. tz
6. normalize
7. name
8. closed
0. 최소 실행 조건
앞의 실행 조건에서 설명했다시피 start, end, periods, freq 중 최소 3개를 반드시 선택해야한다.
1) start, end 선택 (freq => default='D')
2) start, periods 선택(freq => default='D')
3) start, end, periods 선택
4) start, end, freq 선택
1. start
start를 써줘도 쓰지 않아도 상관 없다. 무조건 첫 번째 datetime은 start로 인식한다.1-1) start, periods, freq
2. end
첫 번째 datetime은 start로 인식하지만 때로는 처음을 쓰지 않고 end를 선택함으로써 규칙에 변화를 줄 수도 있다.2-1) start, periods, (freq => default='D')
2-2) end, periods, (freq => default='D')
2-3) start, end, periods
3. periods
생략4. freq
위에서 기술한 freq에서 가장 많이 사용하는 Offset Aliases를 꼭 해보길 권장한다.필자는 그중에서도 많이 쓰는 10개에 대해서만 예를 보이도록 하겠다.
4-1) D - Day
4-2) W - week
4-3) M - month
4-4) SM - semi month end (15th and end of month)
4-5) MS - month start (1st of month)
4-6) SMS - semi month start (1st and 15th)
4-7) Q - quarter end(end of March, June, September, December)
4-8) QS - quarter start (January, April, July, October 1st)
4-9) Y - end of year
4-10) YS - year start
5. tz
앞의 설명과 마찬가지로 '대륙/나라의 수도 혹은 큰 지역'의 형태를 띠는 것 같다.ex) 'Asia/Hong_Kong','Asia/Tokyo' ,'Asia/Shanghai','US/Eastern',
'Europe/Berlin','Europe/Brussels','Europe/Paris'
cf)
필자는 'US/Southern','US/Western','US/Northern' 뿐 아니라 'Asia/Beijing'도 실행이 되지않는다. 왜 그런지는 모르겠지만...
6. normalize
start나 end에 기입한 시간대를 자정(0시)으로 바꿔주는 기능7. name
생략8. closed
빨간 네모박스와 closed를 살피면서 보면 이해가 쉬울 것 같다.8-1) closed=None ==> default
8-2) closed='right'
8-3) closed='left'