반응형
<Web 화면에 Dataframe 보여주기 & 버튼 만들기>
# 기본적으로 모든 코드들은
def main() :
if __name__ == '__main__' :
main()
ㄴ 이 기본형식 안에서 쓰여저야 실행된다. 혹시 실행이 되지 않을경우 하단에 마무리 코드를 적지 않았는지 확인!
< app3.py로 작성 (데이터 프레임 보여주기) >
# 판다스 데이터 프레임을 웹 화면에 보여주는 방법
import streamlit as st
import pandas as pd
def main():
df = pd.read_csv('./streamlit/data/iris.csv')
# 프린트함수는 디버깅용
print(df)
st.dataframe (df)
# 하단 터미널에 데이터 프레임 출력확인되고, 서버 실행
# 해당 문구는 app3.py로 생성하여 작성하였으므로
$ streamlit run app3.py
# Web 실행 화면
ㄴ 데이터 프레임이 화면에서 출력되는것 확인 가능
# species 컬럼의 유니크 값을 화면에 표시
print(df['species'].unique())
st.write(df['species'].unique())
st.text('아이리스 꽃은' + df['species'].unique() + '로 되어있다.')
# 웹화면에 유니크한 값은 문구로 출력하여 보여준다.
### app3.py 전체 코드 ###
# 판다스 데이터 프레임을 웹 화면에 보여주는 방법
import streamlit as st
import pandas as pd
def main():
df = pd.read_csv('./data/iris.csv')
# 프린트함수는 디버깅용
print(df)
st.dataframe (df)
# species 컬럼의 유니크 값을 화면에 표시
print(df['species'].unique())
st.write(df['species'].unique())
st.text('아이리스 꽃은' + df['species'].unique() + '로 되어있다.')
if __name__ == '__main__' :
main()
< app4.py로 작성 (UI 함수) >
# UI 함수들 (버튼 등등)
import streamlit as st
import pandas as pd
def main() :
df = pd.read_csv('./streamlit/data/iris.csv')
# 버튼 만들기
# 유저가 버튼을 누르면 데이터프레임을 보여준다.
if st.button('데이터 보기') :
st.dataframe(df)
# 저장 후
$ streamlit run app4.py 로 서버 실행 후 확인
ㄴ 버튼이 생성되고 버튼을 누를경우 데이터를 보여준다.
# '대문자' 버튼을 만들고,
# 버튼을 누르면, species 컬럼의 값들을 대문자로
# 변경한 데이터 프레임을 화면에 보여주세요.
if st.button('대문자') :
st.dataframe(df['species'].str.upper())
else :
st.text('아무것도 안눌렀습니다.')
# 대문자 버튼이 생성되고, 선택하지 않을경우 안내 문구가 나오고
# 누를경우 'species' 컬럼의 값들을 대문자로 보여줌.
# 라디오 버튼과 정렬
# 라디오 버튼 : 여러개중에서 한개 선택하게 할때.
my_order = ['오름차순 정렬', '내림차순 정렬']
status = st.radio('정렬방법 선택하세요', my_order)
# 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개보기', False) :
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 len(choice_list) != 0 : # if choice_list == [] : 이렇게 적어도됨 방법은 여러가지
st.dataframe (df[choice_list])
else :
st.write()
# 선택한 컬럼이 없을경우 빈칸으로
# 슬라이더
# 슬라이더 : 숫자 조정하는데 주로 사용
st.slider('데이터 선택', -5.0, 10.5, 0.0, 0.5)
# 나이를 슬라이더로 입력받는다.
# 1세부터 120세까지 입력받을 수 있도록 한다.
# 선택한 나이가 웹화면에 출력되도록 한다. "선택한 나이는 33세 입니다."
age = st.slider('나이 선택', 1, 120, 1, 1 )
st.info( f'선택한 나이는 {age}세 입니다.' )
# 익스펜더
# 익스펜더
with st.expander('Hello'):
st.info('데이터 프레임입니다.')
st.dataframe(df)
ㄴ 접기/펼치기 형식의 버튼 누르면,
ㄴ 설명문과 데이터프레임이 출력됨
### app4.py 전체 코드 ###
# UI 함수들 (버튼 등등)
import streamlit as st
import pandas as pd
def main() :
df = pd.read_csv('./data/iris.csv')
# 버튼 만들기
# 유저가 버튼을 누르면 데이터프레임을 보여준다.
if st.button('데이터 보기') :
st.dataframe(df)
# '대문자' 버튼을 만들고,
# 버튼을 누르면, species 컬럼의 값들을 대문자로
# 변경한 데이터 프레임을 화면에 보여주세요.
if st.button('대문자') :
st.dataframe(df['species'].str.upper())
else :
st.text('아무것도 안눌렀습니다.')
# 라디오 버튼 : 여러개중에서 한개 선택하게 할때.
my_order = ['오름차순 정렬', '내림차순 정렬']
status = st.radio('정렬방법 선택하세요', my_order)
# 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개보기', False) :
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 len(choice_list) != 0 : # if choice_list == [] : 이렇게 적어도됨 방법은 여러가지
st.dataframe (df[choice_list])
else :
st.write()
# 슬라이더 : 숫자 조정하는데 주로 사용
st.slider('데이터 선택', -5.0, 10.5, 0.0, 0.5)
# 나이를 슬라이더로 입력받는다.
# 1세부터 120세까지 입력받을 수 있도록 한다.
# 선택한 나이가 웹화면에 출력되도록 한다. "선택한 나이는 33세 입니다."
age = st.slider('나이 선택', 1, 120, 1, 1 )
st.info( f'선택한 나이는 {age}세 입니다.' )
# 익스펜더
with st.expander('Hello'):
st.info('데이터 프레임입니다.')
st.dataframe(df)
if __name__ == '__main__' :
main()
다음 게시글로 계속
728x90
반응형
'DASHBOARD APP 개발 > Streamlit Library' 카테고리의 다른 글
Streamlit 기본 lib : 파일을 분리해서 개발하는 방법 (0) | 2024.05.07 |
---|---|
Streamlit 기본 lib : Web화면에서 이미지, csv 파일 업로드 하기 (0) | 2024.05.07 |
Streamlit 기본 lib : Web화면에서 유저한테 숫자, 문자, 시간, 색 입력받기 (0) | 2024.05.07 |
Streamlit 기본 lib : Web 화면에 이미지/동영상/음악 파일 보여주기 (0) | 2024.05.07 |
Streamlit 기본 lib : 서버 실행 및 텍스트 표시 (st.title/text 등..) (0) | 2024.05.07 |