코드카타(https://essay2892.tistory.com/127)
프로젝트 진행
Streamlit 라이브세션
더보기




import streamlit as st
st.set_page_config(
page_title="QA/AC streamlit App",
page_icon="🧊",
layout="wide")
st.title("컬럼(Column) 예시")
# 페이지를 세 개의 세로 열로 나눕니다.
col1, col2, col3 = st.columns(3)
with col1:
st.header("A cat")
with col2:
st.header("A dog")
with col3:
st.header("An owl")
# 열의 너비 비율을 조정합니다.
col1, col2, col3 = st.columns([1, 2, 1])
with col2:
st.title("Expander 예시")
with st.expander("📺 요즘 OTT 플랫폼에서 뜨는 작품들"):
st.write("""
- **더 글로리**: 화제의 드라마, 역대급 복수극!
- **피지컬: 100**: 서바이벌 예능 열풍!
- **오징어 게임**: 전 세계를 휩쓴 한국형 데스게임!
""")
st.write("더 자세한 줄거리는 스포일러 방지를 위해 생략!")
with st.expander("⏰ 오늘의 소셜 미디어 소식"):
st.write("""
- 틱톡에서 난리 난 '#쿠쿠다스챌린지'
- 인스타그램 릴스, 짧은 영상 편집 팁 공유하기
- 재테크/절약 관련 '챌린지'도 인기 상승 중!
""")
# 세 개의 탭을 생성합니다.
tab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])
with tab1:
st.header("A cat")
with tab2:
st.header("A dog")
with tab3:
st.header("An owl")
# 사이드바를 생성하고, 라디오 버튼을 추가합니다.
with st.sidebar:
add_radio = st.radio(
"Choose a shipping method",
("Standard (5-15 days)", "Express (2-5 days)")
)


import streamlit as st
# st.title("버튼 클릭 횟수 (session_state 미사용)")
# count = 0 # 항상 0으로 시작
# if st.button("버튼을 눌러보세요!"):
# count += 1
# st.write(f"버튼 클릭 횟수: {count}")
st.title("버튼 클릭 횟수 (session_state 사용)")
# session_state에 count 키가 없으면 0으로 초기화
if "count" not in st.session_state:
st.session_state.count = 0
if st.button("버튼을 눌러보세요!"):
st.session_state.count += 1
st.write(f"버튼 클릭 횟수: {st.session_state.count}")

import streamlit as st
import pandas as pd
import time
# st.title("캐싱 미사용 예제")
# def expensive_computation(n):
# # 실제로는 더 복잡한 연산이라고 가정
# time.sleep(3) # 3초 대기 (연산 비용 시뮬레이션)
# return sum(i*i for i in range(n))
# options = [1000, 3000, 5000] # 예시로 3개만
# n = st.selectbox("숫자를 선택하세요", options)
# if st.button("Compute"):
# start = time.time()
# result = expensive_computation(n)
# elapsed = time.time() - start
# st.write(f"결과: {result}")
# st.write(f"소요 시간: {elapsed:.2f} 초")
# st.write("같은 n 값이라도, Compute 누를 때마다 3초씩 기다립니다.")
# st.title("캐싱 사용 예제")
# @st.cache_data
# def expensive_computation(n):
# st.write(f"실제 계산 수행... (n={n})")
# time.sleep(3) # 3초 대기 (연산 비용 시뮬레이션)
# return sum(i*i for i in range(n))
# options = [1000, 3000, 5000]
# n = st.selectbox("숫자를 선택하세요", options)
# if st.button("Compute"):
# start = time.time()
# result = expensive_computation(n)
# elapsed = time.time() - start
# st.write(f"결과: {result}")
# st.write(f"소요 시간: {elapsed:.2f} 초")
# st.info("같은 n을 다시 선택해 Compute를 누르면, 이미 계산한 결과를 캐시에서 즉시 반환합니다!")
st.title("캐싱 사용 예제")
@st.cache_data
def load_data(file_path):
time.sleep(3) # 로딩 시간 시뮬레이션
return pd.DataFrame({"data": [1, 2, 3]}) # 간단한 예시
if st.button("데이터 불러오기"):
start = time.time()
df = load_data("big_data.csv") # 첫 호출 시 3초 걸림
st.write(df.head())
st.write(f"로딩 시간: {time.time() - start:.2f}초")

더보기




entrypoint.py
import streamlit as st
# 1. 여러 페이지 정보를 등록합니다.
pages = [
st.Page("home.py", title="홈 화면", icon="🏠", default=True),
st.Page("production.py", title="생산 데이터", icon="🏭"),
st.Page("quality.py", title="품질 관리", icon="🔍"),
st.Page("maintenance.py", title="예지 보전", icon="🛠️"),
]
# 2. 사용자가 선택한 페이지를 받아옵니다.
selected_page = st.navigation(pages)
# 3. 선택된 페이지를 실행(run)합니다.
selected_page.run()
home.py
import streamlit as st
st.title("홈 화면")
st.write("제조업 데이터 분석 앱에 오신 것을 환영합니다!")
st.write(
"""
이 곳에서는 생산, 품질, 유지보수 등의 다양한 데이터 분석을
손쉽게 해볼 수 있습니다.
"""
)
maintenance.py
import streamlit as st
st.title("예지 보전 (Predictive Maintenance)")
st.write(
"""
설비 센서(진동, 온도, 압력 등) 데이터를 토대로
고장 징후를 사전에 파악하는 모델 예시를 구현할 수 있습니다.
"""
)
st.subheader("예시: 간단 설명")
st.write(
"""
- 일정 주기마다 장비 상태 데이터를 수집
- 특정 임계값(Threshold)을 초과하는 경우, 유지보수 알림
- 예지 보전 모델로 고장 발생 가능 시점 예측
"""
)
production.py
import streamlit as st
import pandas as pd
st.title("생산 데이터")
st.write("생산량, 가동시간, 공정별 데이터 분석을 해보세요.")
# 예시 데이터: 실제로는 CSV나 DB에서 불러올 수 있음
data = {
"라인": ["A", "B", "C"],
"생산량": [1000, 800, 1200],
"가동시간": [22, 19, 24],
}
df = pd.DataFrame(data)
st.subheader("생산 데이터 테이블")
st.dataframe(df)
st.subheader("라인별 생산량 차트")
st.bar_chart(df.set_index("라인")["생산량"])
quality.py
import streamlit as st
import matplotlib.pyplot as plt
import random
st.title("품질 관리")
st.write("불량률, 불량 유형, 품질 지표 등을 확인합니다.")
# 간단히 불량률 히스토그램 예시 (평균 2%, 표준편차 1% 가정)
data = [random.gauss(0.02, 0.01) for _ in range(100)]
fig, ax = plt.subplots()
ax.hist(data, bins=20, color="orange")
ax.set_title("불량률 분포 (예시)")
ax.set_xlabel("불량률 (%)")
ax.set_ylabel("빈도")
st.pyplot(fig)




'TIL(Today I Learned)' 카테고리의 다른 글
[2025/02/28]내일배움캠프 QA/QC 1기 - 49일차 (0) | 2025.02.28 |
---|---|
[2025/02/27]내일배움캠프 QA/QC 1기 - 48일차 (0) | 2025.02.27 |
[2025/02/25]내일배움캠프 QA/QC 1기 - 46일차 (0) | 2025.02.25 |
[2025/02/24]내일배움캠프 QA/QC 1기 - 45일차 (0) | 2025.02.24 |
[2025/02/21]내일배움캠프 QA/QC 1기 - 44일차 (0) | 2025.02.21 |