본문 바로가기
Streamlit

Streamlit - 파일 분리 앱

by 하니__ 2024. 4. 24.
app8_home.py 파일에 코드를 입력해보자
import streamlit as st

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

이 화면은 분리화면이고 저 함수를 호출하게 되면

나타나는 화면이다

 

app.py는 메인화면
import streamlit as st
from app8_home import run_home


def main() :
    st.title('파일 분리 앱')
    
    menu = ['Home','EDA','ML','About']
    choice = st.sidebar.selectbox('메뉴',menu)
    
    if choice == menu[0]:
        run_home()

 

 

from app8_home import run_home

을 사용하면 app8_home.py에 위에 지정한 함수 run_home를 사용 할수 있게 된다

 

그래서 app8_home.py 에서 작성한 화면을 통째로 보여줄 수 있다는 얘기다

 

코드 10만줄을 써놔도

함수로 지정해두고 호출만 한다면

코드 1줄로 가독성을 좋게 만들 수 있다

 

사이드바의 메뉴에서 홈을 선택하게 됐을 때 이런 화면이 나오게 된다

 

 

 

EDA 화면은
iris.csv 파일 읽고 여러 컬럼들 '선택' 가능하고,
선택한 컬럼들만 화면에 보여주며,
상관계수도 보여주도록 해보자

 

 

app8_eda.py 부터 만들자
def run_eda() :
    st.subheader('EDA 화면')
    
    df = pd.read_csv('./data/iris.csv')
    choice_list = st.multiselect('원하는 컬럼을 선택하세요', df.columns)
    if choice_list :
        st.dataframe( df[choice_list] )
        st.write(df[choice_list].corr())
        
    else:
        st.write(" ")

 

 

st.write(df[choice_list].corr())

부분은

st.dataframe(df[choice_list].corr())

으로 입력하여도 똑같이 출력 된다

 

이때 write로 출력하면 데이터형식이 그대로 출력이 되어

후에 데이터를 쓸 예정이라면 더 추천되며

dataframe으로 출력한다면 데이터형식이 따로 출력이 되지않는다

 

위에서 했듯이 메인화면에서
임포트 해주고 함수를 호출해주자

 

from app8_eda import run_eda


    elif choice == menu[1]:
        run_eda()

 

 

 

 

 

메인 파일의 짧아진 코드
import streamlit as st
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()

 

이렇게 만든다면 짧고 가독성 있으며

문제가 생겼을 시에 저 해당 파일만 찾아서 해결하면 되기 때문에

유지 보수 하기에 편리하다