시계열 데이터

시계열 데이터는 행과 행사이에 시간의 흐름(순서)가 있고, 행과 행 사이의 시간간격이 동일한 데이터를 의미한다.

예) 가게의 일별 매출량 데이터

 

날짜 요소 뽑기

날짜 타입의 변수로 부터 날짜의 요소(일, 월, 주차, ..)를 뽑을 수 있다.

  • .dt.날짜 요소
메서드 내용
df['date'].dt.date YYYY-MM-DD(문자)
df['date'].dt.year 연(4자리 숫자)
df['date'].dt.month 월(숫자)
df['date'].dt.month_name() 월(문자)
df['date'].dt.day 일(숫자)
df['date'].dt.time HH:MM:SS(문자)
df['date'].dt.hour 시(숫자)
df['date'].dt.minute 분(숫자)
df['date'].dt.second 초(숫자
df['date'].dt.quarter 분기(숫자)
df['date'].dt.day_name() 요일 이름(문자)
df['date'].dt.weekday 요일숫자(0-월, 1-화, 2-수, ...) (=dayofweek) 
df['date'].dt.dayofyear 연 기준 몇일째(숫자)
df['date'].dt.days_in_month 월 일수(숫자) (daysinmonth)

 

data = pd.DataFrame([
    ['2024-02-22', 20153],
    ['2024-02-23', 20546],
    ['2024-02-24', 2053],
    ['2024-02-25', 2033],
    ['2024-02-26', 2234532],
    ['2024-02-27', 2653261],
], columns=["Date", "Sales"])

data['Date'] = pd.to_datetime(data['Date'])

print(data['Date'].dt.date) # 각 행 별 날짜 출력 
print(data['Date'].dt.year) # 각 행 별 년도 출력
print(data['Date'].dt.month)# 각 행 별 월 출력
print(data['Date'].dt.month_name()) # 각 행 별 월 영어로 출력
print(data['Date'].dt.day) # 각 행 별 일 출력
print(data['Date'].dt.time) # 각 행 별 시간 출력 => 현재 데이터에는 시간이 없어서 00:00:00
print(data['Date'].dt.hour) #  현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.minute) #  현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.second) #  현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.quarter) # 각 행 별 분기
print(data['Date'].dt.day_name()) # 요일 이름 (문자)
print(data['Date'].dt.weekday) # 각 행 별 요일 이름 (숫 자)
print(data['Date'].dt.dayofyear) # 각 행 별 연 기준 몇일째 인지
print(data['Date'].dt.days_in_month) # 각 행 별 월 일수

 

 

.shift()

시계열 데이터에서 시간의 흐름 전후로 정보를 이동시킬 때 사용한다.

data = pd.DataFrame([
    ['2024-02-22', 20153],
    ['2024-02-23', 20546],
    ['2024-02-24', 2053],
    ['2024-02-25', 2033],
    ['2024-02-26', 2234532],
    ['2024-02-27', 2653261],
], columns=["Date", "Sales"])

data['Date'] = pd.to_datetime(data['Date'])
data['sales_lag1'] = data['Sales'].shift() # 하루 전날 데이터 열 추가
data['sales_lag2'] = data['Sales'].shift(2) # 2일 전날 데이터 열 추가
data['sales_lag_1'] = data['Sales'].shift(-1) # 다음 날 데이터 열 추가
data

 

 

.rolling().mean()

시간의 흐름에 따라 일정 기간 동안 평균을 이동하면서 구하기

data = pd.DataFrame([
    ['2024-02-22', 200],
    ['2024-02-23', 300],
    ['2024-02-24', 400],
    ['2024-02-25', 50],
    ['2024-02-26', 1000],
    ['2024-02-27', 250],
], columns=["Date", "Sales"])

data['Date'] = pd.to_datetime(data['Date'])
data['sales_mean3'] = data['Sales'].rolling(3).mean() # 3일 동안의 평균
data['sales_max3'] = data['Sales'].rolling(3).max() # 3일 동안의 최대값
data['sales_mean3_min_periods1'] = data['Sales'].rolling(3, min_periods=1).mean() # 3일 동안의 평균을 계산하는데, 하나의 값이라도 존재하면 바로 계산
data

 

 

.diff()

특정 시점 데이터, 이전 시점 데이터와의 차이 구하기

  • .diff() : 현재 - 하루 전
  • .diff(2) : 현재 - 2일 전
data = pd.DataFrame([
    ['2024-02-22', 200],
    ['2024-02-23', 300],
    ['2024-02-24', 400],
    ['2024-02-25', 50],
    ['2024-02-26', 1000],
    ['2024-02-27', 250],
], columns=["Date", "Sales"])

data['Date'] = pd.to_datetime(data['Date'])
data['diff1'] = data['Sales'].diff() # 현재 - 하루 전 값
data['diff2'] = data['Sales'].diff(2) # 현재 - 2일 전 값
data['diff3'] = data['Sales'].diff(3) # 현재 - 3일 전 값

data

728x90

'Language > Python' 카테고리의 다른 글

[Pandas] 데이터분석을 위한 데이터 전처리  (2) 2024.03.01
[Pandas] Pandas 기초  (0) 2024.03.01
[Numpy] Numpy 기초  (0) 2024.02.29
[Python] List, Dictionary  (0) 2024.02.28

+ Recent posts