05 Time_Series 실습
❇️ 요약
- datetime
| 배운 것 | 설명 |
|---|---|
pd.to_datetime() | 데이터 타입을 datetime 형으로 전환 |
dt.year | datetime객체에서 년도만 추출 |
dt.weekday | datetime객체에서 요일 추출 (월:0 ~ 일:6) |
datetime.date() | 날짜 정보만 추출 하는데 사용, datetime 객체에서 시간정보를 제외한 date객체 반환 |
mean(numeric_only=True) | 숫자에 대해서만 평균 값 |
fillna(method = 'ffill') | first fill 약자, 결측값 자리에 앞에 있는걸로 채워라 |
fillna(method='bfill') | back fill 약자, 결측값 자리에 뒤에 있는 걸로 채워라 |
dt.to_period() | DatetimeIndex를 PeriodIndex로 변환하는 메서드 |
rolling(n) | n 행수에 대한 데이터 모음 |
datetime.timedelta | datetime 객체의 더하기, 빼기를 수행 가능 |
dt.day_name() | 요일을 문자열로 치환 |
pivot() | 데이터의 열을 기준으로 피벗테이블로 변환시키는 메서드 |
diff() | 한 객체 내에서 열과 열 / 행과 행의 차이를 출력하는 메서드 |
set_index | 기존의 열을 인덱스로 설정하는 메서드 |
pd.to_datetime(series, format, errors)
series : datetime 형태로 전환 하려는 열
format : datetime의 형태 지정
errors : 오류를 불러일으킬지 결정하는 인수, 보통 error = ‘raise’ 형태로 사용
| 포맷코드 | 설명 | 예 | 포맷코드 | 설명 | 예 |
|---|---|---|---|---|---|
| %y | 년도(2자리) | 23 | %b | 월의 줄임말 | Jan |
| %Y | 년도(4자리) | 2023 | %B | 월 | January |
| %m | 월값 (01 ~ 12 월) | [01,12] | %p | AM or PM | AM |
| %d | 일값 (01 ~ 31 일) | [01,31] | %c | 날짜와 시간을 출력함. | Thu May 25 10:13:52 2023 |
| %H | 시간(24시간) | [00,23] | %j | 1년 중 누적 날짜 | [001,366] |
| %I | 시간(12시간) | [01,12] | %U | 1년 중 누적 주(일요일 시작) | [00,53] |
| %M | 두자리 분(00 ~ 59 분) | [01,59] | %W | 1년 중 누적 주(월요일 시작) | [00,53] |
| %S | 초(2자리) | [00,59] | %x | 현재 설정된 지역에 기반한 날짜 출력 | 05/25/23 |
| %a | 요일의 줄임말 | Mon | %X | 현재 설정된 지역에 기반한 시간 출력 | 17:22:21 |
| %A | 요일 | Monday | %Z | 시간대 출력 | 대한민국 표준시 |
| %w | 숫자로 된 요일 | [0(일), 6(토)] | %% | 문자 % | % |
| %F | %Y-%m-%d 의 약어(shortcut) | 2024-01-01 | |||
| %D | %Y/%m/%d 의 약어(shortcut) | 2024/01/01 |
df.mean(axis=None, skipna=None, level=None, numeric_only=None, kwargs)
axis : {0 : index / 1 : columns} 계산의 기준이 될 축
skipna : 결측치를 무시할지 여부
level : Multi Index의 경우 연산을 수행할 레벨
numeric_only : 숫자, 소수, 부울만 이용할지 여부
kwargs : 함수에 전달할 추가 키워드
df.to_period(freq=None, axis=0, copy=True)
freq : 원하는 시간 단위로 변환 가능
axis : 변환할 기준 축
copy : 사본을 형성할지 여부
기본적인 사용법
freq값을 지정하여 원하는 시간간격으로 출력이 가능
freq="Y"
print(idx.to_period("Y"))
>>
PeriodIndex(['2021', '2021', '2021', '2021', '2022'], dtype='period[A-DEC]')
freq="M"
print(idx.to_period("M"))
>>
PeriodIndex(['2021-08', '2021-09', '2021-10', '2021-12', '2022-01'], dtype='period[M]')
freq="W"
print(idx.to_period("W"))
>>
PeriodIndex(['2021-07-26/2021-08-01', '2021-09-13/2021-09-19',
'2021-10-25/2021-10-31', '2021-12-13/2021-12-19',
'2022-01-24/2022-01-30'],
dtype='period[W-SUN]')
freq="H"
print(idx.to_period("H"))
>>
PeriodIndex(['2021-08-01 00:00', '2021-09-15 00:00', '2021-10-30 00:00',
'2021-12-14 00:00', '2022-01-28 00:00'],
dtype='period[H]')
df.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0,
closed=None, method='single')
window : 계산할 창(window)의 크기 / 열 기준으로 계산할 경우 행의 수
min_periods : 계산할 최소 크기(기간) / window 안의 값의 수가 min_periods의 값보다 작을 경우 NaN을 출력 / 기본적으로 window 크기와 동일
center : {True / False} 레이블을 window의 중간에 둘지 여부 / 기본값은 False로 레이블이 창 우측에 위치
win_type : {'triang' / 'gaussian' / ...} 가중치를 넣어 계산할 경우 계산 방식 / 때에 따라 연산 메서드에 추가 인수를 지정해야할수도 있다
on : 시계열 인덱스나, 시계열과 유사한 열이 있을 경우 이 열을 기준으로 rolling을 수행 가능
axis : 계산의 기준이 될 축
closed : {'left' / 'right' / 'both' / 'neither'} window가 닫히는 방향
method :{'single' / 'table'} numba 를 이용하여 테이블 계산을 진행하여 속도를 높힐지 여부 / 현재 'single'만 사용가능
timedelta에는 다음 표와 같은 매개변수를 사용할 수 있다.
| 항목 | 설명 |
|---|---|
| days | 일 |
| seconds | 초 |
| microseconds | 마이크로 초 |
| milliseconds | 밀리 초 (1밀리 초는 1000마이크로 초) |
| minutes | 분 |
| hours | 시간 |
| weeks | 주 (7일을 의미함) |
df.pivot(index=None, columns=None, values=None)
index : 인덱스로 사용될 열
columns : 열로 사용될 열
values : 값으로 입력될 열
※ index나 columns에 리스트를 입력 할 경우 멀티 인덱스로 피벗테이블이 생성
values에 리스트를 입력 할 경우 각 값에 대한 테이블이 연속적으로 생성
df.diff(periods=1, axis=0)
axis : 비교할 축을 지정
periods : 비교할 간격을 지정 / 기본은 +1로 바로 이전 값과 비교
df.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
keys : 인덱스로 설정할 열의 이름 / list형태로 설정할 경우 Multi Index로 설정
drop : 인덱스로 설정한 열을 기존 열에서 제거할지 여부 / 기본값은 True로 열에서 제거
append : 기존 인덱스를 유지하면서 새 인덱스를 추가할 지 여부
inplace : pandas 공통 인수로 원본을 대체할지 여부
verify_integrity : 추가하려는 인덱스에 중복 값이 있을 경우 오류를 띄울지 여부