Streamlit를 사용하여 데이터 시각화 도구 만들기

11397 단어 Streamlit
오늘
다음은 파이톤
  • Streamlit로 기술할 수 있는 응용 프레임워크를 소개한다.웹 브라우저를 사용합니다.Flash, Django, Dash, Plaotly 등은 웹 응용 프레임워크가 있지만 자바스크립트, HTML, 웹 응용을 시작하는 구조 등 파이톤 이외의 지식을 은근히 요청한다.이것은 프로그래머에게 웹 응용 프로그램 자체의 공간을 맞춤형으로 만들어 줄 수 있다.한편, 연구 단계의 데이터 과학, 머신러닝 분야에서 요구되는 기능은 데이터를 도표로 시각화하거나 이미지를 표시하는 것으로, 필요에 따라 슬라이더, 복선상자 등 간단한 UI만 있으면 충분하다.이런 기능들은 비록 매우 간단하지만 (고급 기능이기 때문에) 그 구조를 만드는 데는 작업 시간이 필요하다.예를 들어 버튼 변경, 선택 상자 변경 통지, 통지 수신 후의 논리적 설명, 슬라이더의 값이 바뀌어 매개 변수의 변동을 나타내는 처리는 데이터를 그리는 처리보다 더 많은 인코딩을 필요로 한다.
  • Jupter Notebook/Lab에서 실행되는 ipywidgets에서 interact 함수를 제공합니다. 사용자가 정의한 함수와 파라미터 정의 범위의 자물쇠 함수를 걸어서 파라미터를 바꾸고 결과를 표시할 수 있습니다.이것은 최대 2, 3줄까지 가능하며 매우 간단하다.하지만 Jupter Notebook에서 이러한 제약을 적용할 수 있는 환경이 있다.
  • 태그 밑에 글을 쓰거나 파이톤의 코드를 기술하거나 그림을 읽고 PIL이나 Matplotllib로 표시하는 데 익숙해지면 바로 들어갈 수 있을 것이다.
  • Streamlit.
    The fastest way to
    build data apps
    Streamlit 첫 페이지https://www.streamlit.io/의 표어입니다.너는 그 가장 빠른 속도에 따라 응용 프로그램을 구축할 수 있다.
    어떤 물건
  • 예를 들어 분류 문제를 해결하는 임무를 위임받았다.학습용 자료에 어떤 것이 있는지, 라벨에 어떤 그림이 있는지 확인하는 것이 가장 좋다.다음 gif는 이를 위해 제작되었습니다.
  • 이 데이터 집합은 TensorFolow/Keeras의 강좌https://www.tensorflow.org/tutorials/load_data/images에도 소개되어 있다.
  • 주제 밖의 말은 갑자기 교과서를 읽는 것보다 가이드를 읽고 튜토리얼을 읽으면 TF로 학습 라인을 구축하는 방법이 이해하기 쉽다.

  • 차리다
    streamlit를 설치합니다.여기는 0.61.0입니다.꽃을 로드하기 위한 데이터 세트에는 TensorFolow가 사용됩니다.여기
    $ pip install streamlit 
    $ pip install tensorflow
    
    이루어지다
  • 코드를 씁니다app.py.50줄 이내에 위gif와 같은 프로그램을 실현할 수 있습니다.
  • app.py
    
    import pathlib
    from typing import List
    
    from PIL import Image
    import streamlit as st
    from tensorflow import keras
    
    
    def download() -> str:
        data_dir = keras.utils.get_file(
            origin="https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz",
            fname="flower_photos",
            untar=True,
        )
        return data_dir
    
    
    class FlowerDataset:
        def __init__(self):
            self.data_dir = pathlib.Path(download())
            self.labels = ["sunflowers", "daisy", "roses", "tulips", "dandelion"]
    
        def select(self, label: str) -> List[pathlib.Path]:
            return list(self.data_dir.glob(f"{label}/*"))
    
    
    def main():
        st.markdown("# Data visualization tool using Streamlit")
        dataset = FlowerDataset()
        selector = st.sidebar.selectbox("Select your favorite flower", dataset.labels)
        selected_data = dataset.select(selector)
        index = st.sidebar.number_input(
            f"Select index from 0 to {len(selected_data)}",
            min_value=0,
            max_value=len(selected_data),
            value=0,
            step=1,
        )
        sample_path = selected_data[index]
        image = Image.open(sample_path)
        expand = st.sidebar.checkbox("Expand")
        degree = st.sidebar.slider("Degree", min_value=0, max_value=180, step=1)
        st.image(image.rotate(degree, expand=expand))
    
    
    if __name__ == "__main__":
        main()
    
    동작 방법pip install streamlit에서 가져오면streamlit 명령을 사용할 수 있습니다.
    $ streamlit run app.py
    
    이렇게 하면 브라우저에서 자동으로 업스트림 화면 옆에 선택 상자와 슬라이더가 표시됩니다.
    gist 코드도 실행할 수 있습니다
    위 코드는 gist에서 공개됩니다.
    - https://gist.github.com/terasakisatoshi/a26da05fa8077e9cda816e35ba0a12e1
    이런 상황 앱.py를 가리키는 파일을 지정하면 파일을 잃어버리는 번거로움을 줄일 수 있습니다.
    $ streamlit run https://gist.githubusercontent.com/terasakisatoshi/a26da05fa8077e9cda816e35ba0a12e1/raw/41541b7a1c842fe484f44ca8be2cd4fea00e7f94/app.py
    
    코드 컨텐트 정보
  • main() 함수의 내용을 보면 st.markdownst.sidebar.checkbox 같은 것이 보인다.UI의 위젯입니다(widget).실행 코드의 순서에 따라 화면 위쪽부터 순서대로 설정합니다.사이드바 (어쨌든 옆 구역) 에 설정하고 싶을 때 st.sidebar.<widgetname> 처럼 sidebar 를 거쳐 코드를 씁니다.
  • 개발된 워크플로우
  • 실제 터치하면 streamlit run app.py가 실행된 후 변경app.py된 파일이 있으면 Streamlit에서 이 변경 사항을 감지하고 다시 프로그램을 실행합니다.이 기능은 매우 편리하다.특히streamlit run...다시 할 필요 없으니까.이걸 사용하면 스크랩으로 앱을 쓸 때import streamlit as st 한 줄만 쓴 다음stream lit run으로 파일에 수시로 기술하고 현장 업데이트를 하면 눈에 띄면 그에 맞는 것을 만들 수 있다.
  • UI를 조작한 후의 동작 처리는 어떻게 실현됩니까?
  • 주의 코드는 value=st.<widgetname>의 형식입니다.왼쪽에는 선택 상자나 슬라이더가 유지되는 값이 저장됩니다.Streamlit은widget이 가지고 있는 값이 변할 때 원본 코드를 재평가합니다.변경된 값이 들어왔기 때문에value 변경된 값 논리에 따라 실행됩니다.이를 통해 UI 를 통해 적절한 작업을 수행할 수 있습니다.물론 재평가할 때마다 무거운 함수를 처리하는 악몽을 여러 번 상상하지만 @ts.cache를 통해decord를 통해 해결한다.위의 예는 캐시를 사용하지 않아도 무겁지 않기 때문에 생략했습니다.
  • 사용자는 "UI의 구성은 대체로 위에서 이 순서대로 배열된다"는 의미와 데이터를 처리하는 논리적 능력만 갖추면 된다.그림% 1개의 캡션을 편집했습니다. st.image 그림% 1개의 캡션을 편집했습니다.즉, 매개 변수 함수의 그리기는 슬라이더와 Matplotlib을 통해 그릴 수 있으며, 이렇게 하면 상호작용 도표를 생성할 수 있다.
  • 총결산
  • Streamlit은 시각 형상 도구를 제작했습니다.지금까지 ipywidget으로 만들었어요.
    스트림릿으로 데모를 제작할 수 있습니다.
  • 만들 때 "얼마나 편한가!"이런 감동이 끊이지 않는다.논리는 쓸 수 있지만 UI 제작이 부담스럽다면 스트리밍을 해볼 가치가 있다고 생각해요.
  • 좋은 웹페이지 즐겨찾기