개발/대시보드
웹 대시보드 - sidebar 를 사용할 때 파일을 분리하여 개발하는 방법.
웅'jk
2022. 12. 13. 12:01
다음과 같은 코드가 있습니다.
menu = ['Home','EDA','ML','About']
choice = st.sidebar.selectbox('메뉴',menu)
if choice == 'Home':
pass
elif choice == 'EDA' :
pass
elif choice == 'ML' :
pass
elif choice == 'About' :
pass
사이드바에 선택상자인데 각각의 항목들을 전부 한 페이지에 작성하면 추후에 유지보수 작업에 어려움이 있습니다.
따라서 각 항목을 파일로 분리한 다음에 가져오는 방법을 이용합니다.
app_home.py
import streamlit as st
def run_home_app() :
st.subheader('Home 화면')
st.text('홈화면에서 할 일을 여기에 코딩합니다.')
app_eda.py
import streamlit as st
import pandas as pd
def run_eda_app() :
st.subheader('EDA 화면')
df = pd.read_csv('streamlit_data/iris.csv')
st.dataframe(df)
st.dataframe(df.corr())
app_ml.py
import streamlit as st
import pandas as pd
def run_ml_app() :
st.subheader('머신러닝 화면')
각 파일별로 원하는 코딩을 했다면 이제 이 파일들을 불러와 사용해봅시다.
from app_home import run_home_app
from app_eda import run_eda_app
from app_ml import run_ml_app
def main() :
st.title('파일 분리 앱')
# Exploratory Data Analysis
menu = ['Home','EDA','ML','About']
choice = st.sidebar.selectbox('메뉴',menu)
if choice == 'Home':
run_home_app()
elif choice == 'EDA' :
run_eda_app()
elif choice == 'ML' :
run_ml_app()
elif choice == 'About' :
pass
if __name__ == '__main__' :
main()
위와 같이 함수만 가져와서 사용하는 방법이 있습니다.
혹여나 각분리된 파일에 변수마저 가져오고 싶다면 파일 자체를 import 하여 사용이 가능합니다.