시계열 데이터

시계열 데이터의 이상치 처리 방법

❌ 옳지 않은 방법

해당 시점의 데이터를 무조건 삭제

⭕ 올바른 방법 기법들

선형 보간법 적용

이동평균을 이용한 스무딩

계절성을 고려한 분해 후 보정

→ 시계열에서 이상치를 다룰 때는 데이터 행을 ‘삭제’ 하는 것이 아니라, 이상치 값을 빈칸으로 만드는 ‘마스킹’ 후 ’보간’ 또는 ‘보정’ 하는 것이 정석이다.

Streamlit

A. 만능 출력 도구: st.write

타입을 자동 감지해서 알맞은 방식으로 표시한다.

무엇을 써야 할지 모를 때의 정답.

import streamlit as st
import pandas as pd

# 문자열 -> 텍스트
st.write("외경 측정값을 표시합니다.")
st.write("안뇽")

st.write(50.012)

st.write('**굵게**와 *기울임*도 됩니다.')

st.write({"line":"A","lot":"L-2026-001","cpk":1.42})

df = pd.DataFrame({
 "측정번호": [1, 2, 3],
 "외경(mm)": [50.01, 49.97, 50.18],
})
st.write(df)

st.write("라인:","A","/ 로트:","L-2026-001")

스크린샷 2026-05-26 195809.png

B. 텍스트 계열

st.title("🏭 QC 측정 대시보드") # 페이지에 보통 하나만
st.header("1. 라인 A 현황") # 큰 섹션 구분
st.subheader("외경 측정") 

st.markdown(
 """
 ### 오늘의 요약
 - **측정 수**: 120건
 - **불량률**: 2.5%
 - **Cpk**: 1.42
 | 라인 | 합격률 |
 |---|---:|
 | A | 99.2% |
 | B | 96.8% |
 """
)

st.metric("Cpk", "1.42")
st.caption("Cpk ≥ 1.33 이면 공정능력 양호로 판단")

st.code(
 """
 SELECT line, AVG(dim_mm) AS mean
 FROM measurements
 WHERE date = '2026-05-18'
 GROUP BY line;
 """,
 language="sql",
 line_numbers=True, # 1.30+
)

 
st.write("위쪽 섹션")
st.divider()
st.write("아래쪽 섹션")

with st.echo():
 # 이 코드는 화면에도 표시되고, 실제로도 실행됨
 measurement = 50.012
 pass_fail = "합격" if 49.8 <= measurement <= 50.2 else "불합격"
 st.write(f"{measurement} mm → {pass_fail}")

스크린샷 2026-05-26 202228.png

스크린샷 2026-05-26 202235.png