DASHBOARD APP 개발/Streamlit Library

Streamlit 기본 lib : 파일을 분리해서 개발하는 방법

신강희 2024. 5. 7. 16:10
728x90

< 파일을 분리해서 개발하는 방법 >

# 기본적으로 모든 코드들은

def main() :
if __name__ == '__main__' :
    main()

ㄴ 이 기본형식 안에서 쓰여저야 실행된다. 혹시 실행이 되지 않을경우 하단에 마무리 코드를 적지 않았는지 확인!

 

# 웹 화면에 실행 확인은 생성한 파일명이나 혹은 연동한 app을 서버로 실행하여야 함.

# 터미널을 cmd로 열어 & streamli lit run 실행시킬서버명칭.py 로 실행후 always rerun 후 확인

# 분리개발시에 sub 화면으로 사용하는 코드는 마지막 문구를 넣지 않아도됨

 

< app8.py + app8_home / eda / ml / about .py 로 작성 >

# 파일을 분리해서 개발하는 방법
# 기본적으로 실무에서는 한화면에서 모든 코드를적어 개발하는것이 아니라
# 파일을 분리하여 각 파일에서 코드들을 작성하여 함수로 만들고 이함수들을 import로 가져와서 실행
# 오류가 생길경우 해당 파일만 수정하기 위한 용도

import streamlit as st
# 다른 파일에서 만든 함수를 import로 가져오는것
 
from app8_home import run_home
from app8_eda import run_eda
from app8_ml import run_ml
from app8_about import run_about
 
def main() :
    st.title('파일 분리 앱')

    menu = ['Home', 'EDA', 'ML', 'About']

    choice = st.sidebar.selectbox('메뉴', menu)

    if choice == menu[0] :
        run_home()
    elif choice == menu[1] :
        run_eda()
    elif choice == menu[2] :
        run_ml()
    elif choice == menu[3] :
        run_about()

if __name__ == '__main__' :
    main()

 

# 이제 각 파일 별로 해당 함수에 맞는 코드를 작성

 

# app8_home.py

import streamlit as st

def run_home() :
    st.subheader('홈 화면')
    st.text('파일 분리 앱 실습')
    st.image('./data/image_03.jpg')

 

# app8_eda.py

# # eda는 탐색적 데이터 분석의 약자
import streamlit as st
import pandas as pd

def run_eda() :
    st.subheader('EDA 화면')

    # iris.csv 파일 읽어와서
    # 여러 컬럼들 선택 가능토록 하여,
    # 선택한 컬럼들만 화면에 보여주고,
    # 상관계수도 보여주도록 개발.

    df = pd.read_csv('./data/iris.csv')

    st.dataframe(df)
    column_list = df.columns
    choice_list = st.multiselect('원하는 컬럼을 선택하세요', column_list)

    # print(choice_list)

    if choice_list != [] :
        st.dataframe (df [choice_list])
        st.dataframe (df [choice_list].corr(numeric_only= True))

 

# app8_ml.py

import streamlit as st

def run_ml() :
    # 예측하는 작업을 수행한다.

    st.subheader('머신러닝 예측')

 

# app8_about.py

import streamlit as st

def run_about() :

    st.subheader('이 앱은... ')

ㄴ 이렇게 각 파일별로 작성한 코드들은 가장 메인이 되는 파일에 함수로 import 하여 실행시켜서, 각 페이지별로 동작되도록 개발한다.

 

다음 게시글로 계속

반응형