본문 바로가기
DataScience/Streamlit

Streamlit 웹대시보드 이미지,동영상,title, button, text, dataframe, multiselect, slider

by leopard4 2022. 12. 12.

웹페이지에 이런식으로 표시되게 할거다.

 

위의 그림과 무관하게 테스트 코드를 작성하였으니 

직접 실행해보면서 테스트 하기를 바람.

 

import streamlit as st
import pandas as pd

# UI 요소들을 처리하는 방법
# 버튼, 라디오버튼, 셀렉트박스, 멀티셀렉트, 슬라이더

def main() :
    df = pd.read_csv('streamlit_data/iris.csv')
    
    # 버튼을 클릭하면, 데이터프레임이 보이도록 만들기. 
    
    if st.button('데이터프레임 보기') : 
        st.dataframe(df)
     

    name = 'Mike'
    
    if st.button('대문자로') :
        st.text(name.upper())

    if st.button('소문자로') :
        st.text(name.lower())

    status = st.radio('정렬을 선택하세요', ['오름차순정렬','내림차순정렬'])
    
    if status == '오름차순정렬' : 
        # df 의 petal_length 컬럼을 오름차순으로 정렬해서 보여주세요
        st.dataframe(df['petal_length'].sort_values())
    elif status == '내림차순정렬' :
        # df 의 petal_length 컬럼을 내림차순으로 정렬해서 보여주세요
        st.dataframe(df.sort_values('petal_length',ascending=False))

    
    # 체크박스를 체크하면, 데이터프레임이 나오고,
    # 해제하면, 데이터프레임이 나오지 않게

    if st.checkbox('show / hide') :
        st.dataframe(df)
    else:
        st.write('')

    # 셀렉트박스 : 여러개 중에 한개 선택
    language = ['Python','C','JAVA','PHP','GO']

    my_choice = st.selectbox('좋아하는 언어를 선택하세요', language)
    st.text(f"나는 {my_choice} 언어를 가장 좋아합니다.")
    # 유저가 선택하면, 해당 언어를 다음처럼 표시해준다.
    # 저는 Python 언어를 가장 좋아합니다.
    # 저는 JAVA 언어를 가장 좋아합니다.

    # 만약 유저가 선택한 언어가, 파이썬이나 php나 Go 언어이면,
    # 배우기 쉽습니다. 라고 화면에 보여주고,
    # 자바나 씨언어를 선택하면,
    # 배우기 어렵습니다. 라고 화면에 보여주세요.
    if my_choice == 'Python' or my_choice == 'GO' :
        st.write('배우기 쉽습니다.')
    else : 
        st.write('배우기 어렵습니다.')

    # 여러개를 선택할 수 있게 하는 multiselect 
    
    # 아이리스 데이터프레임의 컬럼이름을 가져오세요.

    # st.text(df.columns)

    selected_list = st.multiselect('원하는 컬럼을 선택하세요', df.columns )
    # 유저가 컬럼을 선택하면, 해당 컬럼을 화면에 보여주고,
    # 유저가 아무컬럼도 선택하지 않으면, 데이터프레임 보여주지 않는다.
    if len(selected_list) == 0 :
        st.text('')
    else : 
        st.dataframe(df[selected_list])

if __name__ == '__main__' : 
    main()

--------------------------------

import streamlit as st

def main() :
    st.title("웹 대시보드")

    print('웹 대시보드')
    
    st.text('웹 대시보드 개발하기')

    st.header('이 영역은 헤더 영역')
    st.subheader('이 영역은 서브 헤더 영역')
    
    st.success('성공했을때 메시지를 보여줄때 사용')
    st.warning('경고 메세지를 보여주고 싶을때')
    st.info('정보성 메세지를 보여주고 싶을때')
    st.error('문제가 발생했음을 보여주고 싶을때')
    
    # 파이썬의 함수들의 설명을 보여주고 싶을때
    st.help( sum)
    st.help(len)

if __name__ == '__main__' : 
    main()
# 판다스의 데이터프레임을, 웹화면으로 보여주는 방법

import streamlit as st
import pandas as pd

def main() : 
    
    st.title('아이리스 꽃 데이터')
    
    df = pd.read_csv('streamlit_data/iris.csv')
    
    st.dataframe(df)

    species = df['species'].unique()

    st.text('아이리스 꽃은' + species + '으로 되어있다.')

if __name__ == '__main__' :
    main()

----------------------------------

import streamlit as st
import pandas as pd

# UI 요소들을 처리하는 방법
# 버튼, 라디오버튼, 셀렉트박스, 멀티셀렉트, 슬라이더

def main() :
    df = pd.read_csv('streamlit_data/iris.csv')
    
    # 버튼을 클릭하면, 데이터프레임이 보이도록 만들기. 
    
    if st.button('데이터프레임 보기') : 
        st.dataframe(df)
     

    name = 'Mike'
    
    if st.button('대문자로') :
        st.text(name.upper())

    if st.button('소문자로') :
        st.text(name.lower())

    status = st.radio('정렬을 선택하세요', ['오름차순정렬','내림차순정렬'])
    
    if status == '오름차순정렬' : 
        # df 의 petal_length 컬럼을 오름차순으로 정렬해서 보여주세요
        st.dataframe(df['petal_length'].sort_values())
    elif status == '내림차순정렬' :
        # df 의 petal_length 컬럼을 내림차순으로 정렬해서 보여주세요
        st.dataframe(df.sort_values('petal_length',ascending=False))

    
    # 체크박스를 체크하면, 데이터프레임이 나오고,
    # 해제하면, 데이터프레임이 나오지 않게

    if st.checkbox('show / hide') :
        st.dataframe(df)
    else:
        st.write('')

    # 셀렉트박스 : 여러개 중에 한개 선택
    language = ['Python','C','JAVA','PHP','GO']

    my_choice = st.selectbox('좋아하는 언어를 선택하세요', language)
    st.text(f"나는 {my_choice} 언어를 가장 좋아합니다.")
    # 유저가 선택하면, 해당 언어를 다음처럼 표시해준다.
    # 저는 Python 언어를 가장 좋아합니다.
    # 저는 JAVA 언어를 가장 좋아합니다.

    # 만약 유저가 선택한 언어가, 파이썬이나 php나 Go 언어이면,
    # 배우기 쉽습니다. 라고 화면에 보여주고,
    # 자바나 씨언어를 선택하면,
    # 배우기 어렵습니다. 라고 화면에 보여주세요.
    if my_choice == 'Python' or my_choice == 'GO' :
        st.write('배우기 쉽습니다.')
    else : 
        st.write('배우기 어렵습니다.')

    # 여러개를 선택할 수 있게 하는 multiselect 
    
    # 아이리스 데이터프레임의 컬럼이름을 가져오세요.

    # st.text(df.columns)

    selected_list = st.multiselect('원하는 컬럼을 선택하세요', df.columns )
    # 유저가 컬럼을 선택하면, 해당 컬럼을 화면에 보여주고,
    # 유저가 아무컬럼도 선택하지 않으면, 데이터프레임 보여주지 않는다.
    if len(selected_list) == 0 :
        st.text('')
    else : 
        st.dataframe(df[selected_list])

    # 슬라이더.
    age = st.slider('나이', 1, 100)

    st.text('당신이 선택한 나이는' + str(age) + '입니다')

    st.slider('데이터', 1, 100, step=5)

    st.slider('데이터', 1, 200, value=75)

    st.slider('데이터', 0.0, 1.0, step=0.1)

    with st.expander('hello'):
        st.text('안녕하세요~')

if __name__ == '__main__' : 
    main()

이미지, 동영상 처리

# 웹 대시보드에 이미지파일, 동영상 파일 넣는방법

import streamlit as st
import pandas as pd


# 이미지 처리를 위한 라이브러리 
from PIL import Image

def main():
    img = Image.open('streamlit_data/image_03.jpg')

    print(img)

    st.image(img)
    
    st.image(img, use_column_width= True)

    image_url = 'https://www.motorgraph.com/news/photo/202212/31176_98030_5735.jpg'

    st.image(image_url)

    # 동영상 
    
    video_file = open('streamlit_data/secret_of_success.mp4','rb')

    st.video(video_file)





if __name__ == '__main__' : 
    main()