시계열 데이터 분석으로 그룹별로 결손 데이터를 보완하는 스고 기술 기술

시계열 데이터를 사용하여 그룹별로 리샘플링하여 누락 된 행을 보간하는 과정이 어려워 공유
예를 들어, 이런 점포별 매출 데이터가 있었다면,
shop    date    sales
A   2020-01-01  100
A   2020-01-04  200
B   2020-01-02  300
B   2020-01-03  400
C   2020-01-02  500
C   2020-01-04  600

각 점포에서 매출이 없었던 날은 매출 0으로 행을 보완하고 싶다고 한다.
최종적으로 입수하고 싶은 데이터로서는↓의 이미지
shop    date    sales
A   2020-01-01  100.0
A   2020-01-02  0.0
A   2020-01-03  0.0
A   2020-01-04  200.0
B   2020-01-01  0.0
B   2020-01-02  300.0
B   2020-01-03  400.0
B   2020-01-04  0.0
C   2020-01-01  0.0
C   2020-01-02  500.0
C   2020-01-03  0.0
C   2020-01-04  600.0

날짜 인덱스를 그룹 간에 세분화하고 동일한 그래프 내에서 시각화하고 싶거나
그룹을 가로질러 일자 단위로 집계하고 싶은 경우 등에는 이러한 입도로 데이터를 정렬하고 싶을 때 있군요.

그룹에 따라서는 사이의 날짜가 잇따르거나 기간의 시작과 끝이 일치하지 않고,
라고 말할 때 깨끗하게 데이터를 정돈할 수 있으므로 꼭 소개하고 싶은 방법이 됩니다!

설명을 위해 먼저 샘플 데이터를 준비합니다.
# データ準備
sample = pd.DataFrame({
    "shop": ["A", "A", "B", "B", "C", "C"],
    "date": pd.to_datetime(["2020-1-1", "2020-1-4", "2020-1-2", "2020-1-3", "2020-1-2", "2020-1-4"]),
    "sales": [100, 200, 300, 400, 500, 600],
})

pd.pivot_table 그리고 우선은 가로 전개하고 fillna 메소드로 Nan 값에 0을 대입
data = pd.pivot_table(sample, index="shop", columns="date").fillna(0)


stack 메서드에서 다시 세로로 확장
data = data.stack().reset_index()
data



할 수 있었다! !
CROSS JOIN을 사용하여 날짜와 그룹의 조합 테이블을 일부러 작성할 필요가 없기 때문에, 적은 코드량으로 실현할 수 있어 편하네요!

좋은 웹페이지 즐겨찾기