Erstellen Sie Diagramme, Netzwerkdiagramme und Datentabellen basierend auf den Daten aus COVID-19-Infektionsstatus des Ministeriums für Gesundheit, Arbeit und Soziales und erstellen Sie eine Webanwendung. Hat. Die erstellte App ist die unten verlinkte.
App-Link: https://chomoku.herokuapp.com/covid-19
Unten sehen Sie den Bildschirm des Netzwerkdiagramms.
Die verwendeten Daten stammen von der Website des Ministeriums für Gesundheit, Arbeit und Soziales. Beim Scraping wird nur die Funktion pandas read_html verwendet. Sie können es auch über den unten stehenden Github herunterladen, aber Sie können es auch wie unten beschrieben über die App herunterladen.
https://github.com/mazarimono/chomoku/blob/master/src/kosei.csv
Der Grund, warum ich diese App erstellt habe, war, dass ich [Toyokeizai.net/sp/visual/tko/covid19/] gesehen habe und so etwas selbst sehen wollte. Das war der Auslöser.
Die App ist in drei Teile unterteilt, indem Seiten mit Registerkarten gewechselt werden.
Die erste Seite zeigt normale Grafiken. Die zweite Seite zeigt das Netzwerkdiagramm an. Eine Seite, auf der Sie die vom Dritten verwendete CSV-Datei als Tabelle anzeigen und die Daten herunterladen können.
Die App wurde mit dem Web Framework Dash erstellt. Die Umgebung ist wie folgt.
Python 3.7.4 dash 1.9.0 dash-core-components 1.8.0 dash-html-components 1.0.2 dash-cytoscape 0.1.1 dash-table 4.6.0 plotly 4.5.0
Als ich mir diesmal verschiedene Neuigkeiten ansah, fragte ich mich, ob ich mich anstecken könnte, wenn ich lange in der Nähe bleiben würde. Es war das. Wenn man sich die Zahlen auf der Website des Ministeriums für Gesundheit und Soziales ansieht, gibt es Daten zur Anzahl enger Kontakte und zum Auftreten von Patienten in der Umgebung (Übrigens wird das Auftreten von Patienten in der Umgebung nicht so stark aktualisiert, sodass die Daten die Situation genau wiedergeben. Es ist unklar, ob es welche gibt).
Deshalb habe ich mich entschlossen, zuerst die Daten zu visualisieren.
Das Diagramm befindet sich unten links auf der Diagrammseite des Patientenzählers. Die x-Achse ist die Anzahl der engen Kontakte und die y-Achse ist die Anzahl der Patienten.
Für diese Visualisierung wird übrigens Plotly Express verwendet. Dash übergibt eine Figur an die Diagrammkomponente, um das Diagramm anzuzeigen. Der Code sieht folgendermaßen aus:
import dash_core_components as dcc
import plotly.express as px
dcc.Graph(
id="ratio_scatter",
figure=px.scatter(
df_covid,
x="contact_num",
y="infection_num",
title="Anzahl der Kontakte (x-Achse) und Auftreten des umgebenden Patienten (y-Achse)",
hover_data=["Neue Nr."],
),
className="six columns",
)
Als nächstes wird die Nummer des Patienten anstelle des "Auftretens umgebender Patienten" in die Daten geschrieben. Es gibt "neue Nr." Und "alte Nr." In den Originaldaten, und es ist ein heikler Ort, auf den man verweisen kann, aber wir werden ein Netzwerkdiagramm erstellen, vorausgesetzt, es zeigt auf "neue Nr.".
Die Dash-Cytoscape, die dieses Mal zum Erstellen des Netzwerkdiagramms verwendet wird, ist eine Komponente, die Cytoscape verwendet. Knoten werden unter Verwendung der neuen Nummer und des neuen Wohnorts erstellt, und die Kanten werden mit den Ausbruchsnummern der umgebenden Patienten verbunden. Dann wird Wählen als Art der Anordnung der Knoten ausgewählt. Dann werden die verbundenen Elemente auf eine schöne Weise nebeneinander angezeigt, wie unten gezeigt.
Dieses Netzwerkdiagramm ist falsch, wenn die Ausbruchsdaten für umgebende Patienten mit der "alten Nummer" erstellt wurden. Wenn es mit "New No." gemacht wurde, schien es keinen Fehler zu geben, wenn man es mit den daneben angehängten Daten vergleicht.
Auf diese Weise schien es einen erheblichen Zusammenhang zwischen den Patienten zu geben. Übrigens ist die Erstellung dieses Teils wie die Erstellung von Knotendaten und Kantendaten mithilfe von CSV-Daten und deren Visualisierung mit Cytoscape. Der Code sieht folgendermaßen aus:
import dash_cytoscape as cyto
import pandas as pd
import ast
#CSV-Datei lesen
df_covid = pd.read_csv("./src/kosei.csv", index_col=0, parse_dates=["date"])
#Erstellen von Daten zur Weitergabe an Cytoscape-Elemente
covid_el = []
for i in range(len(df_covid)):
covid_el.append(
{
#Knotendaten erstellen
"data": {
"id": f"No.{df_covid.iloc[i, 0]}",
"label": f"No.{df_covid.iloc[i, 0]} / {df_covid.iloc[i, 5]}",
}
}
)
#Kantendaten erstellen
contact_list = []
for i2 in ast.literal_eval(df_covid.iloc[i, -2]):
if i2.startswith("No."):
covid_el.append(
{"data": {"source": f"No.{df_covid.iloc[i, 0]}", "target": f"{i2}"}}
)
network = html.Div(
[
html.Div(
[
html.H4("Netzwerkdiagramm der umgebenden Patientenausbrüche"),
cyto.Cytoscape(
id="covid_cyto",
layout={"name": "cose"}, #Layout Cose Auswahl
elements=covid_el, #Daten, die im Netzwerkdiagramm visualisiert werden sollen
style={
"width": "100%",
"height": "80vh",
"backgroundColor": "white",
"borderRadius": "10px",
},
),
],
className="eight columns",
),])
Es gibt verschiedene Möglichkeiten, eine Tabelle in Dash zu erstellen. Hier erstellen wir jedoch eine Tabelle mithilfe der Dash-Tabelle. Das Schöne an dieser Tabelle ist, dass sie auf verschiedene Arten bearbeitet werden kann und die Daten in der bearbeiteten Tabelle zur Visualisierung wiederverwendet und vom Benutzer als CSV-Datei heruntergeladen werden können. Die Daten sind übrigens CC, Sie können sie also gerne verwenden.
Wenn Sie beispielsweise andere Daten als "Alte Nr." Möchten, klicken Sie wie unten gezeigt auf den Papierkorb in der Kopfzeile der Tabelle und klicken Sie dann auf die Schaltfläche "Exportieren", um die CSV-Datei herunterzuladen.
Um die Funktion zum Herunterladen der CSV-Datei in die Tabelle hinzuzufügen, übergeben Sie einfach "CSV" an das export_format der DataTable-Instanz des Dash-Table-Pakets. Der Code der hier erstellten Tabelle lautet wie folgt.
import dash_table
table = html.Div(
[
dash_table.DataTable(
id="covid_table",
columns=[{"name": i, "id": i, "deletable": True} for i in df_covid.columns],
data=df_covid.to_dict("records"),
fixed_rows={"headers": True, "data": 0},
editable=True,
filter_action="native",
row_deletable=True,
sort_action="native",
export_format="csv",
fill_width=False,
virtualization=True,
style_cell={"textAlign": "left"},
),
html.Img(src="assets/cc.png "),
]
)
Wie oben erwähnt, habe ich den Teil, an dem ich interessiert war, aus den Daten des Ministeriums für Gesundheit, Arbeit und Soziales extrahiert und als Anwendung visualisiert.
Letztes Jahr, als Sie an der Ethereum-Veranstaltung Devcon teilnahmen, hielt Audrey Tan aus Taiwan einen Vortrag. Zu dieser Zeit gab es die Frage: "In Japan wurde ein alter Mann, der nicht viel versteht, der für IT zuständige Minister, aber was denken Sie?" Es gibt so etwas wie derzeit realisiert der Bedenken der Menschen.
Aber gestern habe ich gerade angekündigt Tokio ist eine großartige Website, und die Datenmenge, die verwendet werden kann, nimmt zu, und nützliche Daten werden erneut erstellt. Es wäre schön, einen Zyklus zu haben, den Sie sein möchten.
Der Anwendungscode ist übrigens auf Github. Ich werde die Anwendung nach und nach aktualisieren.
https://github.com/mazarimono/chomoku/blob/master/app.py#L837
Vielen Dank für viele LGTM. Eine einfache praktische Anwendung von Dash, dem Framework, das Anwendungen unterstützt, erfolgt mit "Hannari Python". Wenn Sie interessiert sind, tun Sie bitte!
https://hannari-python.connpass.com/event/170431/
Recommended Posts