728x90
반응형
시계열 데이터
시간데이터 조작
- 시간 유형 데이터 만들기
dates = ["2020-01-01", "2020-03-01", "2021-09-01"] dates
- 시간 유형의 문자열을 날짜 타입으로 변환하기 (형변환)
ts_dates = pd.to_datetime(dates) ts_dates


- 년월일 단위로 추출하기
- to_period() : 날짜 타입의 데이터에서 특정 날짜(년, 월, 일)을 추출하고자 할 때 사용
pr_day = ts_dates.to_period(freq="D") pr_day
- 년월 단위로 추출하기
pr_month = ts_dates.to_period(freq="M") pr_month
- 년 단위로 추출하기
pr_year = ts_dates.to_period(freq="Y") pr_year
데이터 읽어들이기
df = pd.read_csv("./data/timeseries.csv")
df


- Date 데이터를 날짜타입으로 변경하여 새로운 컬럼에 넣기
- 새로운 컬럼 이름 : new_Date
df['new_Date'] = pd.to_datetime(df['Date']) df


- new_Date 컬럼의 0번째 데이터를 추출하기
- 데이터 값 수정할 때는 loc, iloc 써서 가상의 메모리로 접근해야 함
date_0 = df["new_Date"][0] date_1 = df.loc[0, 'new_Date'] date_2 = df.iloc[0, 6] date_3 = df["new_Date"].iloc[0] date_4 = df["new_Date"].loc[0] date_0, date_1, date_2, date_3, date_4
- 날짜 타입의 컬럼만 남기고 날짜 유형을 가지는 Date컬럼은 삭제하기
df.drop("Date", axis=1, inplace=True)
- new_Data 컬럼의 데이터를 인덱스로 사용하게 하기
- 시계열 분석을 위해서는 index를 날짜 타입의 데이터로 사용해야함
df.set_index('new_Date', inplace=True)


기간 설정하기
📍 기간 설정하는 함수 : pd.date_range()
- start : 설정 기간의 시작 값
- end : 설정 기간의 끝값(None은 무한대)
- periods : 생성할 기간의 갯수
- freq : 시간 간격 설정(Y는 년도, M은 월, D는 일), 2Y(연도를 2년씩 증가시킴)
- tz : 타임존(사용할 국가 지정)
- 아래 함수 해석
- 2020년 1월 1일을 시작값으로 종료값 없이 6개의 구간값을 출력
- 시간 간격은 Y(년도)를 기준으로 1씩 증가시키고, 사용할 시간은 한국시간 사용
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=6, freq="Y", tz="Asia/Seoul") timestamp_df
- 3년 단위로 기간 구성하기, 6개 기간 추출하기
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=6, freq="3Y") timestamp_df
- 2개월 단위로 기간 설정, 기간은 3개
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=3, freq="2M") timestamp_df
- 3일 단위로 기간 설정, 기간은 6개
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=6, freq="3D") timestamp_df
- 2시간 간격으로 4개 기간 추출
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=4, freq="2H") timestamp_df
- 3분 간격으로 5개 기간 추출
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=5, freq="3MIN") timestamp_df
- 2초 간격으로 3개 기간 추출
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=3, freq="2S") timestamp_df
- 2일 2시간 2분 2초 간격으로 5개 기간 추출
timestamp_df = pd.date_range(start="2020-01-01", end=None, periods=5, freq="2D 2H 2MIN 2S") timestamp_df
- 인덱스를 컬럼으로 만들기
df.reset_index(inplace=True)
- new_Date 컬럼에서 "년", "월", "일" 따로 추출하여 새로운 컬럼으로 생성하기
- 데이터프레임 안에 특정 날짜 타입 컬럼의 각 값에서 년/월/일 추출/변경하기 위해서는 각 값에 접근해야 함
df["Year"] = df["new_Date"].dt.year df["Month"] = df["new_Date"].dt.month df["Day"] = df["new_Date"].dt.day df
- new_Date 컬럼의 데이터를 이용해서, 0000-00(년-월) 단위로 추출하여, YM 컬럼 생성하기
''' 년-월 단위로 추출해서 YM 컬럼 생성하기 ''' df["YM"] = df["new_Date"].dt.to_period(freq="M") ''' 년-월-일 단위로 추출해서 YMD 컬럼 생성하기 ''' df["YMD"] = df["new_Date"].dt.to_period(freq="D")
- new_Date 컬럼을 인덱스로 지정하기
df.set_index("new_Date", inplace=True)
- df 데이터프레임의 0번째 행의 값을 추출
''' df["2015-07-02"] >> 이건 불가능 !! 인덱스가 RangeIndex가 아니면 직접 접근이 안되기 때문에 오류 발생 >> loc 또는 iloc를 사용해야함 ''' df_0 = df.iloc[0] df_1 = df.loc["2015-07-02"] df_0, df_1
- 인덱스 2016-06-29 ~ 2018-06-27까지의 행 조회하기
df.loc["2016-06-29":"2018-06-27"]
- df 변수로 csv 파일 새로 불러들이고, new_Date 컬럼 생성
- Date 컬럼을 날짜 타입으로 변환해서 사용
df = pd.read_csv("./data/timeseries.csv") df["new_Date"] = pd.to_datetime(df["Date"]) df.set_index("new_Date", inplace=True) df.drop("Date", axis=1, inplace=True) df
- 그래프 그리기
- x축 : 인덱스 값
- y축 : 각각 컬럼의 범위 값으로
- 각 컬럼에 대한 선그래프 그리기(그래프 하나에 모든 컬럼의 선그래프 표현)
df.plot()
728x90
반응형
'Digital Boot > 시계열 분석' 카테고리의 다른 글
[시계열 분석] 페이스북 시계열 분석 라이브러리 / Prophet (0) | 2024.01.16 |
---|---|
[시계열 분석] 주가예측 / 시계열 데이터 분석 / ARIMA 모델 - (2) (0) | 2024.01.16 |
[시계열 분석] 주가예측 / 시계열 데이터 분석 / ARIMA 모델 - (1) (2) | 2024.01.15 |