Πώς να δημιουργήσετε τον Πίνακα ελέγχου Coronavirus με Python και Dash;

Αριθμός υποθέσεων / ημερών

Η διάδοση του κοροναϊού είναι αυτό που σήμερα μιλάει ο καθένας. Πρώτες περιπτώσεις παρατηρήθηκαν στην Κίνα και τώρα εξαπλώθηκαν σε 186 χώρες σε όλο τον κόσμο. Το ποσοστό αύξησης των περιπτώσεων ποικίλλει σε διάφορες χώρες. Ενώ χώρες όπως η Σιγκαπούρη δίνουν έναν πολύ καλό αγώνα ενάντια στον ιό και τη διατήρηση των περιπτώσεων σε χαμηλό αριθμό, σε ορισμένες χώρες όπως η Ιταλία ο αριθμός των περιπτώσεων αυξάνεται εκθετικά. Προκειμένου να συγκρίνουμε τον τρόπο με τον οποίο κάθε χώρα καταπολεμά τον ιό, δημιούργησα ένα ταμπλό χρησιμοποιώντας pandas και dash βιβλιοθήκες στο python. Σε αυτή την ιστορία θα σας πω πώς το έκανα.

Ο ταμπλός που δημιουργήθηκε από το Πανεπιστήμιο John Hopkins

Θα χρησιμοποιήσω τα δεδομένα από το github repo του Πανεπιστημίου Johns Hopkins. Αναπροσαρμόζουν τον αριθμό των περιπτώσεων και των θανάτων καθημερινά.

Τώρα αφήνει κάποια κωδικοποίηση.

Πρώτα από όλα πρέπει να εισαγάγουμε βιβλιοθήκες για να πάρουμε δεδομένα και να σχεδιάσουμε τον πίνακα ελέγχου.

Εισαγωγή dash εισαγωγής dash_core_components ως dcc import dash_html_components ως εισαγωγή html plotly.graph_objs όπως πηγαίνετε pandas εισαγωγής ως pd

Μπορείτε να διαβάσετε τα δεδομένα δίνοντας τη διεύθυνση url στο pandas dataframe ως:

url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv"

df = pd.read_csv (url)

Μετά από αυτό μπορούμε να απαλλαγούμε από στήλες lat και από καιρό δεν τους χρειαζόμαστε για το έργο μας. Επίσης, θα ομαδοποιήσουμε τα δεδομένα μας ανά χώρα. Στη συνέχεια, θα μεταφέρουμε τα δεδομένα έτσι ώστε κάθε χώρα να είναι μία στήλη και οι ημερομηνίες θα είναι σε σειρές.

df_cntry = df_cntry.T df_cntry = df_cntry.drop (['Lat', 'Long'] 1) df_cntry = df_cntry.T df_cntry.reset_index (inplace = True) df_cntry ['index'] = df_cntry ['index'] ισχύουν (pd.to_datetime)

Μετά την απόσπαση τελευταία, μακρά και η μεταφορά του πλαισίου δεδομένων μοιάζει με αυτό.

Τώρα πρέπει να ελέγξουμε την πρώτη ημέρα ανιχνεύεται περίπτωση.

Οι πρώτες ημερομηνίες για την υπόθεση 19 φαίνονται παρακάτω:

Ιταλία: 1/31/20, Ιράν: 2/18/20, Γερμανία: 1/26/20, Τουρκία: 3/13/20, ΗΠΑ: 2/23/20

Θα καθορίσουμε αυτές τις ημερομηνίες σε ένα λεξικό:

firstday_cntry = («Ιταλία»: «2/19/20», «Ιράν»: «2/18/20», «Γερμανία»: «2/18/20», «Τουρκία»: «3/13/20» , 'ΗΠΑ': "2/23/20"} cntry_names = firstday_cntry.keys ()

Τώρα θα έχουμε τον αριθμό των υποθέσεων μετά την πρώτη ημερομηνία μιας χώρας. Για να γίνει αυτό, θα δημιουργήσουμε ένα νέο πλαίσιο δεδομένων που ονομάζεται "df_new" παρακάτω.

Οι αριθμοί = [] για το i στην περιοχή (45): numbers.append (i) new_numbers = [] για k, v στο firstday_cntry.items (): new_numbers.append (df_cntry [df_cntry ['index']> v] [k ] .tolist ())

df_new = pd.DataFrame (new_numbers) df_new = df_new.T df_new.columns = cntry_names df_new ['Ημέρα'] = pd.Series (αριθμοί)

Οι αριθμοί δείχνουν τον αριθμό των περιπτώσεων για κάθε χώρα ημέρες από την πρώτη περίπτωση. Για παράδειγμα, η Τουρκία ανίχνευσε την πρώτη περίπτωση 7 ημέρες πριν και έτσι μετά την 7η σειρά οι τιμές θα είναι

Τώρα είναι καιρός να δημιουργήσει dashbord. Για να δημιουργήσουμε πίνακα οργάνων, θα δημιουργήσουμε δύο λεξικά που ονομάζονται ετικέτες και ίχνη χρησιμοποιώντας έναν βρόχο.

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash (__ όνομα_, εξωτερικά_stylesheets = εξωτερικά φύλλα στυλ)

ίχνη = [] ετικέτες = []

για i σε cntry_names: traces.append (dict (x = df_new ['Ημέρα'], y = df_new [i], text = i,

όνομα = i)) labels.append (dict ({'label': i, 'αξία': i}))

Είμαστε έτοιμοι να ξεκινήσουμε τον πίνακα ελέγχου μας. Χρησιμοποιώντας τον παρακάτω κώδικα μπορούμε να το ξεκινήσουμε. Στο πρόγραμμα περιήγησής σας πηγαίνετε "http://127.0.0.1:8050/" και θα δείτε τον πίνακα ελέγχου.

app.layout = html.Div ([html.Div (

dcc.Graph (id = "barplot", σχήμα = {"δεδομένα": ίχνη, "διάταξη": go.Layout (title = "Covid-19"

)})), html.Div (dcc.Dropdown (επιλογές = ετικέτες)]))

αν __name__ == "__main__": app.run_server ()

Τελικός πίνακας εργαλείων

Μπορούμε να διαπιστώσουμε ότι την ημέρα 6 ο αριθμός των υποθέσεων είναι κάτω από:

Ιταλία: 453, Τουρκία: 359, Ιράν: 95, ΗΠΑ: 74, Γερμανία: 17

Ως συμπέρασμα, εάν δεν ληφθούν άλλα μέτρα προφύλαξης, η Τουρκία θα έχει περισσότερες από 1000 περιπτώσεις την ημέρα 9. Μπορούμε να δούμε πόσο καλά η χώρα μας καταπολεμά τον ιό corona σε σύγκριση με άλλες χώρες.

Ημέρα 9