일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- DataFrame
- freeze_support
- 진행 상황
- 의사 클래스
- HTML
- 멀티 로그인
- CSS
- OpenAPI+
- pywinauto
- 웹크롤링
- QueueHandler
- highlight.js
- 금융결제원
- 티스토리
- idxmin
- Python
- 구현
- Tistory
- 퀀트
- 금결원
- Windows
- line number
- 우리FIS
- 필기
- 파이썬
- multiprocessing
- 코드블럭
- idxmax
- 하이라이트
- pycharm
- Today
- Total
맨땅에 헤딩하는 사람
[Python] pandas로 날짜 리스트 만들기 본문
순차적인 데이터를 갖는 리스트를 만드는 방법은 여러가지가 있다.
필자의 경우 list comprehension을 사용해서 리스트를 생성한다.
아래 코드는 list comprehension을 사용해서 1-30 중 10의 배수를 제외한 리스트를 만드는 방법이다.
>>> print([i for i in range(1,31) if i%10 != 0]) [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29] |
이와 같이 숫자나 문자 데이터를 갖는 리스트를 생성할 경우 위와 같은 방법은 굉장히 효과적이다.
그러나 일정 기간의 날짜 리스트, 즉 날짜와 날짜 사이의 리스트를 만들기 위해서는 상당히 복잡해진다.
pandas에서는 이런 고민을 쉽게 해결할 수 있도록 date_range 라는 함수를 제공한다.
pandas.date_range (start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs)
→ pandas.core.indexes.datetimes.DatetimeIndex (return type)
start, end, period 중 2가지가 입력값으로 존재해야 함수가 동작한다.
start는 시작 날짜,
end는 종료 날짜,
period는 생성되는 날짜 range의 개수
라 생각하면 된다.
>>> pd.date_range('20200101', datetime.date(2020,1,15), freq='B') # 주중 Out[20]: DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10', '2020-01-13', '2020-01-14', '2020-01-15'], dtype='datetime64[ns]', freq='B') |
>>> pd.date_range('2020-01-01', '01/15/2020', freq='W') # 일요일 Out[21]: DatetimeIndex(['2020-01-05', '2020-01-12'], dtype='datetime64[ns]', freq='W-SUN') |
>>> pd.date_range('2020-01-01', periods=3) # 일일 Out[23]: DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03'], dtype='datetime64[ns]', freq='D') |
위 함수의 좋은 점은 start, end parameter가 자유롭다는 것이다. 우리가 보편적으로 생각하는 날짜의 문자열 형식을 대부분 수용한다.
생성된 타입은 dataindex로 이를 tuple()이나 list() 혹은 to_list 함수 등을 사용해서 원하는 타입으로 변경해주면 된다.
또한 freq parameter 값에 따라 다양한 날짜 리스트를 생성하는 강력한 기능 역시 제공한다.
위 예시는 주중('B'), 일요일('W'), 일일('D')을 표현하고자 할 때 사용하는 freq 값이다.
freq에 대한 내용은 다음 표를 참고하면 된다.
B |
business day frequency |
C |
custom business day frequency |
D |
calendar day frequency |
W |
weekly frequency |
M |
month end frequency |
SM |
semi-month end frequency (15th and end of month) |
BM |
business month end frequency |
CBM |
custom business month end frequency |
MS |
month start frequency |
SMS |
semi-month start frequency (1st and 15th) |
BMS |
business month start frequency |
CBMS |
custom business month start frequency |
Q |
quarter end frequency |
BQ |
business quarter end frequency |
QS |
quarter start frequency |
BQS |
business quarter start frequency |
A, Y |
year end frequency |
BA, BY |
business year end frequency |
AS, YS |
year start frequency |
BAS, BYS |
business year start frequency |
BH |
business hour frequency |
H |
hourly frequency |
T, min |
minutely frequency |
S |
secondly frequency |
L, ms |
milliseconds |
U, us |
microseconds |
N |
nanoseconds |
참고
date_range
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html
'파이썬 > 이론' 카테고리의 다른 글
[Python] 아나콘다 tensorflow, h5py 설치 시 오류 (1) | 2020.05.17 |
---|---|
[Python] 수강신청, 티케팅, 서버 신호, 가장 정확한 시간에 신호보내기 (0) | 2020.05.09 |
[Python] re 모듈 사용법 (정규표현식), raw 문자열 (0) | 2020.05.01 |
[Python] None, NaN에 대해서 (2) | 2020.05.01 |
[Python] subprocess에서 stdout 실시간 출력하기 (0) | 2020.04.23 |