빅데이터 QAQC_3기/빅데이터 QAQC_3기 TIL

TIL_251208

usungusung 2025. 12. 8. 21:29

Today I learned

 

 

1. 대시보드 프로젝트 진행(~12.17)

streamlit 대시보드 작성 작업 진행

 

1) sidebar 필터

import streamlit as st
import pandas as pd

st.set_page_config(page_title="공정 모니터링 대시보드", layout="wide")
st.title("공정 시계열 기반 불량 모니터링")

# 1) 캐시된 데이터 로드
@st.cache_data
def load_data():
    df = pd.read_csv("process_timeseries.csv")
    df["timestamp"] = pd.to_datetime(df["timestamp"])
    return df

df_raw = load_data()

# 2) Sidebar 필터
st.sidebar.header("필터")

df = df_raw.copy()

if "rec_num" in df.columns:
    rec_options = sorted(df["rec_num"].unique())
    rec_selected = st.sidebar.selectbox("공정(rec_num) 선택", rec_options)
    df = df[df["rec_num"] == rec_selected]

seq_options = sorted(df["sequence_id"].unique())
seq_selected = st.sidebar.selectbox("시퀀스(sequence_id) 선택", seq_options)

df_seq = df[df["sequence_id"] == seq_selected]

 

2) 시계열 Feature Engineering

import numpy as np

def add_time_features(df: pd.DataFrame) -> pd.DataFrame:
    df = df.sort_values(["sequence_id", "timestamp"]).copy()

    # lag features
    for col in ["sensor_1", "sensor_2", "sensor_3"]:
        df[f"{col}_lag1"] = df.groupby("sequence_id")[col].shift(1)

    # rolling mean / std (window=3)
    for col in ["sensor_1", "sensor_2", "sensor_3"]:
        df[f"{col}_ma"] = (
            df.groupby("sequence_id")[col]
              .rolling(window=3)
              .mean()
              .shift(1)
              .reset_index(level=0, drop=True)
        )
        df[f"{col}_std"] = (
            df.groupby("sequence_id")[col]
              .rolling(window=3)
              .std()
              .shift(1)
              .reset_index(level=0, drop=True)
        )

    # diff (△값)
    for col in ["sensor_1", "sensor_2", "sensor_3"]:
        df[f"Δ_{col}"] = df.groupby("sequence_id")[col].diff()

    return df

df_fe = add_time_features(df)
df_seq_fe = df_fe[df_fe["sequence_id"] == seq_selected]

'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글

TIL_251212  (0) 2025.12.12
TIL_251211  (0) 2025.12.11
TIL_251205  (0) 2025.12.05
TIL_251204  (0) 2025.12.04
TIL_251203  (0) 2025.12.03