๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Python] ํŒŒ์ด์ฌ ์ŠคํŠธ๋ฆผ๋ฆฟ(Streamlit) - ๋ฒ„ํŠผ, ์ฒดํฌ๋ฐ•์Šค, ์…€๋ ‰ํŠธ๋ฐ•์Šค, ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ(button, checkbox, selectbox, slider) ๋ณธ๋ฌธ

๐ŸPython/Streamlit

[Python] ํŒŒ์ด์ฌ ์ŠคํŠธ๋ฆผ๋ฆฟ(Streamlit) - ๋ฒ„ํŠผ, ์ฒดํฌ๋ฐ•์Šค, ์…€๋ ‰ํŠธ๋ฐ•์Šค, ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ(button, checkbox, selectbox, slider)

๋ฃจ๋ฆฌ์•ผใ…‘ 2023. 11. 22. 13:48
๋ฐ˜์‘ํ˜•

 

์ŠคํŠธ๋ฆผ๋ฆฟ(Streamlit)์€ ํŒŒ์ด์ฌ์œผ๋กœ ๋ฒ„ํŠผ, ์ฒดํฌ๋ฐ•์Šค, ์…€๋ ‰ํŠธ๋ฐ•์Šค, ์Šฌ๋ผ์ด๋” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž„ํฌํŠธ ํ•œ๋‹ค.(streamlit, pandas, numpy ๋“ฑ)

 

๋ฒ„ํŠผ(Button)

๋ฒ„ํŠผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•˜์—ฌ ์–ด๋–ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์œ„์ ฏ์ด๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ ํŠน์ • ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

import streamlit as st
import pandas as pd
import numpy as np

def main():
    st.title('App4 - ์•„์ด๋ฆฌ์Šค ๊ฝƒ์˜ ์ข…๋ฅ˜')

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

    # ๋ฒ„ํŠผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

    if st.button('๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๋ณด๊ธฐ'):
        st.dataframe(df)

    name = 'Mike'
    if st.button('๋Œ€๋ฌธ์ž'):
        st.subheader( name.upper() )

    if st.button('์†Œ๋ฌธ์ž'):
        st.subheader( name.lower() )

    # ๋ผ๋””์˜ค ๋ฒ„ํŠผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
    selected = st.radio( '์ •๋ ฌ์„ ์„ ํƒํ•˜์„ธ์š”' , ['์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ','๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ'] )
    if selected == '์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ':
        st.dataframe( df.sort_values('petal_length') )
    elif selected == '๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ':
        st.dataframe( df.sort_values('petal_length' , ascending=False))




if __name__ == '__main__':
    main()

[์ถœ๋ ฅํ™”๋ฉด]

 

์ฒดํฌ๋ฐ•์Šค(Checkbox), ์…€๋ ‰ํŠธ๋ฐ•์Šค(Selectbox)

์ฒดํฌ๋ฐ•์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์„ ํƒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ต์…˜์„ ๋™์‹œ์— ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์…€๋ ‰ํŠธ๋ฐ•์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฉ๋ก์—์„œ ํ•˜๋‚˜์˜ ์˜ต์…˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋“œ๋กญ๋‹ค์šด ํ˜•ํƒœ์˜ ์œ„์ ฏ์ด๋‹ค.

import streamlit as st
import pandas as pd
import numpy as np

def main():
    st.title('App4 - ์•„์ด๋ฆฌ์Šค ๊ฝƒ์˜ ์ข…๋ฅ˜')

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

    #์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•

    if st.checkbox('๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๋ณด์ด๊ธฐ'):
        st.dataframe(df)
    else :
        st.error('๋ฐ•์Šค๋ฅผ ์ฒดํฌ ํ•ด์ฃผ์‹ญ์‹œ์˜ค')
    
    #์…€๋ ‰ํŠธ๋ฐ•์Šค : ์—ฌ๋Ÿฌ๊ฐœ ์ค‘์—์„œ ํ•œ๊ฐœ๋ฅผ ์„ ํƒํ•  ๋•Œ
    language = ['Pyhton', 'Java','C','PHP','GO']

    my_choice = st.selectbox('์ข‹์•„ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜์‹œ์˜ค', language)

    st.text( '์ €๋Š” {}์–ธ์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.'.format(my_choice) )

    if my_choice == language[0] or my_choice == language[3] or  my_choice == language[4]:
        st.text('๋ฐฐ์šฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค')

    elif my_choice == language[1] or my_choice == language[-3]:
        st.text('๋ฐฐ์šฐ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค')

    #๋ฉ€ํ‹ฐ์…€๋ ‰ํŠธ : ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋™์‹œ์— ์„ ํƒ ๊ฐ€๋Šฅ
    
    selected_list = st.multiselect('์—ฌ๋Ÿฌ๊ฐœ ์„ ํƒ ๊ฐ€๋Šฅ',df.columns)

    print(selected_list)

    if len(selected_list) != 0:
        st.dataframe(df[selected_list])
    else :
        st.text('')



if __name__ == '__main__':
    main()

 

[์ถœ๋ ฅํ™”๋ฉด]

์Šฌ๋ผ์ด๋”(Slider)

์Šฌ๋ผ์ด๋”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ’์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์œผ๋กœ, ์ˆซ์ž ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

import streamlit as st
import pandas as pd
import numpy as np

def main():
    st.title('App4 - ์•„์ด๋ฆฌ์Šค ๊ฝƒ์˜ ์ข…๋ฅ˜')

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


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

    age = st.slider('๋‚˜์ด' , 0 , 100)

    #st.text('์ œ ๋‚˜์ด๋Š” {}์‚ด ์ž…๋‹ˆ๋‹ค'.format(age))
    st.text('์ œ ๋‚˜์ด๋Š” ' + str(age) + '์„ธ ์ž…๋‹ˆ๋‹ค')

    st.slider('๋ฐ์ดํ„ฐ',50,200,step=10)   ###step = ์ฆ๊ฐ€ ๋‹จ์œ„

    st.slider('๋‚˜์ด' , 0 , 100, value=28)    #value = ์ดˆ๊ธฐ ์…‹ํŒ… ๊ฐ’

    st.slider('๋ฐ์ดํ„ฐ',-0.5,2.7,step=0.1,value=1.0)

    with st.expander('์ƒ์„ธ๋‚ด์šฉ๋ณด๊ธฐ') :
        st.text('์ƒ์„ธ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค')



if __name__ == '__main__':
    main()

[์ถœ๋ ฅํ™”๋ฉด]

๋ฐ˜์‘ํ˜•