1 datetime 객체
- 날짜와 시간 처리하는 파이썬 라이브러리.
datetime(1970, 1, 1): 원하는 날짜 입력 가능.
datetime.now(): 현재 연월일시분초. KST Korean Standard Time으로 나옴.
datetime.today(): 현재 연월일시분초. UTC, 협정세계시. 위와 미세하게 다르다.
- 빼기 연산
datetime.now() - datetime(1970, 1, 1): 일수, 시간, 초의 시간 차이 계산 가능. 이 경우 타입은 datetime.timedelta형.
1-1 데이터 타입 변환
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y'): 이렇게 하면 문자로 된 열 전체를 datetime으로 바꿀 수 있다.
datetime.strftime('%Y-%m-%d %H:%M:%S'): datetime 데이터를 지정한 형식으로, string으로 추출.
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
=> 여기서 format 지정자 리스트 확인
ebola = pd.read_csv('../data/country_timeseries.csv', parse_dates=['Date']): pd로 데이터를 불러올 때 parse_dates=['열이름']으로 하면 불러올 때 열을 datetime으로 바꿔줌.
1-2 시간 정보 추출
- 객체의 속성으로 날짜 정보 저장되어 있기 때문에 추출 가능
datetime.year
datetime.quarter
datetime.month
datetime.day
datetime.hour
datetime.minute
datetime.second
DF.dt.dt메서드: DF나 Series 내부의 datetime 객체에 접근하는 접근자.
.max() .min(): 맥스가 가장 최근 시간(2024년), min이 가장 먼 시간(1900년 등).
날자 차이를 빼기 연산으로 했다고 치면 큰 거 - 작은 거 했을 때, 그 일수 나온다와 같은 맥락. 작은 게 오래된 거.
1-3 인덱스로 접근하기
1-3-1 Datetimeindex
- 인덱스를 datetime으로 바꾸면, 인덱스가 datetimeindex 객체가 된다. 이를 통해 쉽게 조회.
df.index = df['Date']
df.loc['2010']
df.loc['2010-06']
df.loc['2015-12-29']
1-3-2 Timedeltaindex
- 인덱스가 timedeltaindex 객체로 된다. 접근하기 용이.
tesla['ref_date'] = tesla['Date'] - tesla['Date'].min()
tesla.index = tesla['ref_date']
tesla.loc['0 day': '10 day']
tesla.loc['0 days': '10 days']
1-3-3 빈 날짜 채워넣기
head_range = pd.date_range('2024-01-01', '2024-01-15', freq='B'): pandas의 함수로, 시작일~마지막일의 시간 범위의 날짜를 생성한다. 객체는 datetimeindex고, 하나하나의 요소는 datetime.
- freq에는 생성한 날짜 범위의 빈도 설정.
B: Business day. 주말, 공휴일 제외 평일. 2B하면 이틀 단위.
D: Calendar Day. 매일
W: weekly. 주 단위로. 기본적으로 일요일 기준.
M: Month end: 월말 날짜만.
WOM: week of month. 특정 월의 주를 기준으로 날짜 범위 생성. WOM-3FRI는 매월 세 번째 금요일
MS: Month start, 월초 날짜만
Q: Quarter end 분기 마지막날만
QS: Quarter start. 분기 시작날만.
A: Year end. 연말 날짜만
AS: Year start 연초 날짜만.
H: Hourly 시간 단위로. 2H하면 2시간 단위.
T, min: 분 단위로
S: 초단위로
df.reindex(head_range): 프레임의 인댁스와 컬럼을 새로운 인덱스와 컬럼으로 재배열. 새 인덱스나 컬럼이 기존 데이터프레임에 없으면 해당 위치는 NaN으로 채워진다.
- 매개변수
index=: 새 행 인덱스로 쓸 리스트. 그냥 값만 넣으면 이걸로 들어감.
columns=: 컬럼 레이블로 사용할 리스트
method=: 인덱스 재배열시 사용할 보간 방식. ffill, bfill 등.
fill_value: 재색인 과정에서 새로 추가되는 레이블에 채워넣을 기본값
copy=True: 새 인덱스가 이전 인덱스와 동일해도 데이터 복사.
2 주식 데이터 다루기
2-1 pandas-datareader
- pip install pandas-datareader 설치 필요. anaconda나 주피터에서 !pip
- 웹 상의 다양한 데이터 소스에서 데이터 읽어와서 pandas 데이터프레임으로 쉽게 변환해주는 라이브러리. 주식 가격, 경제 데이터, GDP, 환율 등 다양한 금융 및 경제 데이터에 접근 가능하다.
- yahoo finance, google finanace, stooq, iex, fred 등 여러 데이터소스 지원.
import pandas_datareader.data as web
tesla = web.DataReader('TSLA', 'stooq')
- pandas_datareader.data 모듈은 웹에서 데이터를 읽어오는 함수들을 제공.
- DataReader은 2개의 인수를 받는데, 첫 번째 인자는 데이터를 조회할 식별자. TSLA는 테슬라 주식 심볼. stooq는 데이터 제공하는 소스. stooq의 금융 데이터를 받는다.
- 이렇게 불러온 경우 index가 datetimeindex 객체로 설정.