Datenanalyseergebnisse können schnell als Web-App streamlit visualisiert werden. Es macht Spaß, weil es auf der offiziellen Website verschiedene Beispiele gibt. Die, die ich kürzlich gesehen habe, wurde von huggingface für Veröffentlichte Datensätze anzeigen verwendet.
Ich verwende Streamlit sehr bequem, aber wenn ich mit einem Optionsfeld wie der folgenden Seite zu einer anderen Seite (Registerkarte) wechsle, verschwinden alle Variablen und Datenrahmen. Wenn ich Daten auf der Seite "Eingabedaten" hochlade und zur Seite "Datenverarbeitung" gehe, kann ich nicht auf die Daten verweisen, die ich hochgeladen und in den Datenrahmen eingefügt habe.
Seite zum Hochladen von Daten → Seite zur Datenverarbeitung → Seite zur Datenvisualisierung usw. Ich hatte Probleme, als ich Daten über mehrere Seiten hinweg verarbeiten wollte. Wenn Sie versuchen, es auf einer Seite fertigzustellen, ist es aufgrund der aktuellen Spezifikationen von streamlit vertikal sehr lang.
Es war gut, im Internet herumzuwandern und am Ende die Sitzung zu nutzen, also werde ich es aufschreiben. Leberteil ↓
class _SessionState:
def __init__(self, session, hash_funcs):
"""Initialize SessionState instance."""
self.__dict__["_state"] = {
"data": {},
"hash": None,
"hasher": _CodeHasher(hash_funcs),
"is_rerun": False,
"session": session,
}
def __call__(self, **kwargs):
"""Initialize state data once."""
for item, value in kwargs.items():
if item not in self._state["data"]:
self._state["data"][item] = value
def __getitem__(self, item):
"""Return a saved state value, None if item is undefined."""
return self._state["data"].get(item, None)
def __getattr__(self, item):
"""Return a saved state value, None if item is undefined."""
return self._state["data"].get(item, None)
def __setitem__(self, item, value):
"""Set state value."""
self._state["data"][item] = value
def __setattr__(self, item, value):
"""Set state value."""
self._state["data"][item] = value
def clear(self):
"""Clear session state and request a rerun."""
self._state["data"].clear()
self._state["session"].request_rerun()
def sync(self):
"""Rerun the app with all state values up to date from the beginning to fix rollbacks."""
# Ensure to rerun only once to avoid infinite loops
# caused by a constantly changing state value at each run.
#
# Example: state.value += 1
if self._state["is_rerun"]:
self._state["is_rerun"] = False
elif self._state["hash"] is not None:
if self._state["hash"] != self._state["hasher"].to_bytes(self._state["data"], None):
self._state["is_rerun"] = True
self._state["session"].request_rerun()
self._state["hash"] = self._state["hasher"].to_bytes(self._state["data"], None)
def _get_session():
session_id = get_report_ctx().session_id
session_info = Server.get_current()._get_session_info(session_id)
if session_info is None:
raise RuntimeError("Couldn't get your Streamlit Session object.")
return session_info.session
def _get_state(hash_funcs=None):
session = _get_session()
if not hasattr(session, "_custom_session_state"):
session._custom_session_state = _SessionState(session, hash_funcs)
return session._custom_session_state
Wenn Sie das oben genannte in den Code einfügen,
def main():
state = _get_state()
pages = {
"Eingabedaten":in_page,
"Datenverarbeitung":tran_page,
"Datenvisualisierung":out_page
}
#st.sidebar.title(":floppy_disk: Page states")
page = st.sidebar.radio("Seitenauswahl", tuple(pages.keys()))
# Display the selected page with the session state
pages[page](state)
# Mandatory to avoid rollbacks with widgets, must be called at the end of your app
state.sync()
Machen Sie eine Hauptseite mit Sie können die Seite, die Sie liefern möchten, und die Seite, die Sie akzeptieren möchten, mit dem Status verbinden. ~~. Natürlich konnte ich auch den Datenrahmen übergeben.
def in_page(state):
~~~
#Geben Sie die Variable an, die Sie übergeben möchten.~~Steck es rein
state.dataframe1 = dataframe1
state.var1 = var1
def tran_page(state):
#Die Variable, die Sie akzeptieren möchten~~=state.~~Akzeptieren bei.
dataframe1 = state.dataframe1
var1 = state.var1
~~~
def out_page(state):
~~~
#Endlich Haupt()Und ausführen.
main()
Recommended Posts