일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pyqt5
- git
- Android
- office
- Windows10
- matlab
- 윈도우10
- win32com
- Excel
- 비주얼베이직
- python
- Outlook
- 오피스
- pandas
- 안드로이드
- 파워포인트
- 파이썬3
- 문자열
- windows
- 깃
- Windows11
- 윈도우11
- 엑셀
- VBA
- python3
- 파이썬GUI
- html
- pythongui
- 아웃룩
- 파이썬
Appia의 IT세상
파이썬[Python] Pandas, DataFrame의 날짜를 이용한 Index(Label)만들기 본문
종종 재무 관련된 부분들을 살펴볼 때 흔히들 많이 날짜부분들을 인덱스로 많이 사용하고 합니다. 실제 많은 서적이나 예시등에서도 관련된 부분들을 사용하고 있습니다. 그래서 이번에는 Pandas에서도 관련된 함수에 대해서 한번 살펴보고자 합니다.
우선 Pandas에서도 다음과 같은 함수를 통해서 일련된 날짜 생성등을 활용할 수 있게 지원하고 있습니다.
date_range()
그럼 이를 바탕으로 간단한 예를 살펴보도록 하겠습니다.
example)
import pandas as pd print (pd.date_range('1/1/2020', periods=5)) | cs |
result)
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'], dtype='datetime64[ns]', freq='D') | cs |
위와 같이 5일 동안 연속된 부분들이 생성이 됩니다. freq = 'D'는 Day 기준입니다. 그럼 한번 생성시에 입력인자에 freq을 입력해보도록 하겠습니다.
example)
import pandas as pd print (pd.date_range('1/1/2020', periods=5, freq = 'M')) | cs |
result)
DatetimeIndex(['2020-01-31', '2020-02-29', '2020-03-31', '2020-04-30', '2020-05-31'], dtype='datetime64[ns]', freq='M') | cs |
freq를 바뀌니, 다른 형태로 표시가 됩니다. 월말 기준으로 표시가 됩니다.
종종 주식 관련된 업무를 하다보면 휴일을 제외한 부분에 대해서 표시를 하고 싶을 경우가 있습니다. 이럴 경우에는 date_range()대신에 bdate_range를 이용하시면 됩니다. 이 경우에 토요일 일요일을 제외하고 날짜들을 출력해 줍니다.
example)
import pandas as pd print("일반 날짜 출력") print (pd.date_range('1/1/2020', periods=7)) print("영업일 기준 날짜 출력") print (pd.bdate_range('1/1/2020', periods=7)) | cs |
result)
일반 날짜 출력 DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07'], dtype='datetime64[ns]', freq='D') 영업일 기준 날짜 출력 DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09'], dtype='datetime64[ns]', freq='B') | cs |
기존 부분과 조금 달라짐을 확인할 수 있습니다. 특히 freq ='B'가 적용되는 것을 알 수 있습니다.
Offset 관련된 부분들을 다음 표를 참조해 주시길 바랍니다.
B | business day frequency | BQS | business quarter start frequency |
D | calendar day frequency | A | annual(Year) end frequency |
W | weekly frequency | BA | business year end frequency |
M | month end frequency | BAS | business year start frequency |
SM | semi-month end frequency | BH | business hour frequency |
BM | business month end frequency | H | hourly frequency |
MS | month start frequency | T, min | minutely frequency |
SMS | SMS semi month start frequency | S | secondly frequency |
BMS | business month start frequency | L, ms | milliseconds |
Q | quarter end frequency | U, us | microseconds |
BQ | business quarter end frequency | N | nanoseconds |
QS | quarter start frequency |
오늘은 날짜 기반으로 인덱스를 사용할 수 있도록 DatetimeIndex를 생성하는 방법에 대해서 한번 살펴봤습니다. 살짝의 손질로 보다 좋은 데이터을 읽을 수 있는 기틀이 될 수 있다고 생각합니다.
혹시 궁금하신점이나 문의 사항 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python Pandas' 카테고리의 다른 글
파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 찾기, 선택한 열(Column)기반 중복데이터 찾기 (0) | 2020.11.08 |
---|---|
파이썬[Python] Pandas, CSV파일 불려오기, 내보내기 (1) | 2020.04.24 |
파이썬[Python] Pandas, DataFrame의 범위를 이용한 열, 행 선택 방법(iloc) (4) | 2020.04.04 |
파이썬[Python] Pandas, DataFrame의 인덱스(label)를 이용한 열, 행 선택 방법(loc) (0) | 2020.04.03 |
파이썬[Python] Pandas, DataFrame의 데이터 정렬하기(Sort) (0) | 2020.04.01 |