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
반응형

+ Recent posts