개발/대시보드

웹 대시보드 - 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 하여 사용이 가능합니다.