Lekcja 12 - Nikola Horn

Lekcja 12 - Nikola Horn
Photo by Brooke Lark / Unsplash

Zadanie domowe: Formularz z zapisem danych do pliku JSON

import streamlit as st
import json

st.title("Formularz pracownika")
st.write("Czy wyrażasz zgodę na przetwarzanie danych osobowych?")
zgoda = st.checkbox("Wyrażam zgodę")

if zgoda:
  with st.form("formularz"):
    st.write("Uzupełnij wszystkie pola zgodnie z prawdą.")
    imie = st.text_input(label="Imię i nazwisko")
    wiek = st.slider(label="Wiek", min_value=18, max_value=100)
    wyksztalcenie = st.radio('Posiadane wykształcenie:', options=['Podstawowe', 'Ponadpodstawowe', 'Średnie', 'Zawodowe', 'Wyższe'])
  
    
    submitted = st.form_submit_button("Prześlij")
   

  if submitted:
    st.write("Dziękujemy za wypełnienie formularza!")
    danepracownika = {imie: (wiek, wyksztalcenie)}
    json_string = json.dumps(danepracownika)

    st.json(json_string, expanded=True)

    st.download_button(
        label="Pobierz dane",
        file_name="dane.json",
        mime="application/json",
        data=json_string,
    )

Orzeł czy reszka?

import streamlit as st
import random

st.header("Orzeł czy reszka?")


lista = ["orzel.jpg", "reszka.jpg"]
losowy = random.choice(lista)

if st.button("Flip"):
    st.image(losowy)

Kursy walut

import streamlit as st
import pandas as pd

kursy = pd.read_excel("waluty.xlsx")

kolumny = list(kursy.columns)
kolumny.pop(0)

kursy["data"] = kursy["data"].astype(str)

#sprobowac z iloc
for waluta in kolumny:
    kursy[waluta] = kursy[waluta].str.replace(",", ".").astype(float)

wybor = st.multiselect(label="Wybierz waluty", options=kolumny, default="1USD")
st.line_chart(kursy, x="data", y=wybor)

Notatki z zajęć

Jest cała grupa aplikacji, które są tak naprawdę stroną www dostarczoną z bardzo "odchudzoną" przeglądarką, np. Discord, Slack, MS Teams. Dlatego warto poznać jakiś framework webowy.

Streamlit

Biblioteka/framework stworzona z myślą o budowaniu stron do pracy z danymi czy machine learning. Jego mocną stroną są różnej maści panele informacyjne.

pip install streamlit

import streamlit as st

st.write("Hello World!"

Aby uruchomić aplikację streamlitową należy wpisać w terminalu:

streamlit run nazwapliku.py

Komponenty/funkcje:

API Reference - Streamlit Docs

W momencie ruszenia jakimś komponentem/widgetem cały program jest uruchamiany jeszcze raz! Żeby tak się nie robiło możemy użyć formularza (st.form), w którym wszystko się zapisuje, ale na końcu pojawi się przycisk "Wyślij". Inną opcją jest użycie st.session_state

Session State is a way to share variables between reruns, for each user session.

st.rerun - przeładowuje ekran