❌ 옳지 않은 방법
해당 시점의 데이터를 무조건 삭제
⭕ 올바른 방법 기법들
선형 보간법 적용
이동평균을 이용한 스무딩
계절성을 고려한 분해 후 보정
→ 시계열에서 이상치를 다룰 때는 데이터 행을 ‘삭제’ 하는 것이 아니라, 이상치 값을 빈칸으로 만드는 ‘마스킹’ 후 ’보간’ 또는 ‘보정’ 하는 것이 정석이다.
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")

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}")

