Python/Streamlit

Streamlit) UIํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ

567Rabbit 2024. 4. 26. 17:22

 

 

# UI ํ•จ์ˆ˜๋“ค (๋ฒ„ํŠผ ๋“ฑ๋“ฑ)

import streamlit as st
import pandas as pd

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

    #๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ
    #์œ ์ €๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๋ณด์—ฌ์ค€๋‹ค    
    
    if st.button(label='๋ฐ์ดํ„ฐ๋ณด๊ธฐ') :
        st.dataframe(df)
        
    #'๋Œ€๋ฌธ์ž' ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ , ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด species ์ปฌ๋Ÿผ์˜ ๊ฐ’๋“ค์„ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ์„ธ์š”

    if st.button(label='๋Œ€๋ฌธ์ž'):
         df['species'] = df['species'].str.upper() 
         st.dataframe(df)
    else :
         st.text('์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋ˆŒ๋ €์Šต๋‹ˆ๋‹ค')
        
    #๋ผ๋””์˜ค๋ฒ„ํŠผ : ์—ฌ๋Ÿฌ๊ฐœ์ค‘์—์„œ ํ•œ๊ฐœ ์„ ํƒํ•˜๊ฒŒ ํ• ๋•Œ
    
    my_order = ['์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ','๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ']
    status = st.radio('์ •๋ ฌ๋ฐฉ์‹ ์„ ํƒํ•˜์„ธ์š”', my_order) 
    
    print(status)
    
    # petal_length์ปฌ๋Ÿผ์œผ๋กœ ์ •๋ ฌํ•ด์„œ df๋ณด์—ฌ์ค€๋‹ค    
    if status == my_order[0] :
        st.dataframe(df.sort_values('petal_length',ascending=True))
    elif status == my_order[1] :
        st.dataframe(df.sort_values('petal_length',ascending=False))
        
        
    #์ฒดํฌ๋ฐ•์Šค : ๋‘˜์ค‘์— ํ•˜๋‚˜๋งŒ ์„ ํƒํ•˜๊ฒŒ๋” ๋งŒ๋“ค๋•Œ (์ฒดํฌ/ํ•ด์ œ)
    #์ฒดํฌํ•˜๋ฉด ํ—ค๋“œ 5๊ฐœ ๋ณด์—ฌ์ฃผ๊ณ  ํ•ด์ œํ•˜๋ฉด ์•ˆ๋ณด์—ฌ์ฃผ๋„๋ก
    if st.checkbox('ํ—ค๋“œ 5๊ฐœ ๋ณด๊ธฐ') :
        st.dataframe(df.head())
    
    #์…€๋ ‰ํŠธ๋ฐ•์Šค : ์—ฌ๋Ÿฌ๊ฐœ์—์„œ ํ•œ๊ฐœ๋งŒ ๊ณ ๋ฅด๊ฒŒ ํ•˜๋˜, ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŽ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
    language = ['Python','C','Java','Go','PHP','Dart']
    
    my_choice = st.selectbox('์ข‹์•„ํ•˜๋Š” ์–ธ์–ด ์„ ํƒํ•˜์„ธ์š”', language)
    
    if my_choice == language[0] or my_choice == language[2] :
        st.text('์ •๋ง ์žฌ๋ฏธ์žˆ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค')
    elif my_choice == language[3] or my_choice == language[5] :
        st.text('๋ฐฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค')
    else :
        st.text('์˜ค๋ž˜๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค')
    
    #๋ฉ€ํ‹ฐ ์…€๋ ‰ํŠธ : ์—ฌ๋Ÿฌ๊ฐœ์ค‘์—์„œ, ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ• ๋•Œ
    #์œ ์ €๊ฐ€ ์„ ํƒํ•œ ์ปฌ๋Ÿผ์„, ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋ณด์—ฌ์ฃผ๋˜ ์•„๋ฌด๊ฒƒ๋„ ์„ ํƒ์•ˆํ•˜๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋‚˜์˜ค์ง€ ์•Š๊ฒŒ ํ•˜์‹œ์˜ค
    
    choice_list = st.multiselect('์›ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์„ ํƒํ•˜์„ธ์š”', df.columns)
    
    if choice_list :
        st.dataframe(df[choice_list])
    else :
        st.text('')
    
    #์Šฌ๋ผ์ด๋” : ์ˆซ์ž ์กฐ์ •ํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ
    st.slider('๋ฐ์ดํ„ฐ ์„ ํƒ', -5.0,10.5,0.0,0.5)
    
    #๋‚˜์ด๋ฅผ ์Šฌ๋ผ์ด๋”๋กœ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค 1~120์„ธ๊นŒ์ง€
    
    age = st.slider('๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”', 1,120,20,1)
    
    if age :
        st.write(f'์„ ํƒํ•œ ๋‚˜์ด๋Š” {age}์„ธ ์ž…๋‹ˆ๋‹ค')
    else :
        pass
    
    #์ต์ŠคํŽœ๋”
    with st.expander('Hello') :
        st.text('๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค.')
        st.dataframe(df)
    
if __name__ == '__main__' :
    main()

 

 

 

 

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.  st.button

 

 

 

 

st.button + str.upper()

 

๋Œ€๋ฌธ์ž ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, species๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊พผ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

๋ผ๋””์˜ค๋ฒ„ํŠผ

 

 

 

 

 

 

์ฒดํฌ๋ฐ•์Šค

 

 

 

 

์…€๋ ‰ํŠธ๋ฐ•์Šค

 

 

 

 

 

 

๋ฉ€ํ‹ฐ ์…€๋ ‰ํŠธ

 

 

 

 

์Šฌ๋ผ์ด๋”

 

 

 

 

 

 

์ต์ŠคํŽœ๋”