Kā izveidot Coronavirus informācijas paneli ar Python un Dash?

Gadījumu skaits pret dienām

Koronavīrusa izplatība ir tas, par ko mūsdienās runā visi. Pirmie gadījumi tika novēroti Ķīnā, un tagad tas izplatījās 186 valstīs visā pasaulē. Gadījumu pieauguma temps dažādās valstīs ir atšķirīgs. Lai arī tādas valstis kā Singapūra ļoti labi cīnās pret vīrusu un šo gadījumu skaits ir mazs, dažās valstīs, piemēram, Itālijā, gadījumu skaits palielinās eksponenciāli. Lai salīdzinātu, kā katra valsts cīnās ar vīrusu, es izveidoju informācijas paneli, izmantojot pitonas un pandas un domuzīmes bibliotēkas. Šajā stāstā es jums pastāstīšu, kā es to izdarīju.

Informācijas panelis, ko izveidojusi Džona Hopkinsa universitāte

Es izmantošu datus no Džona Hopkinsa universitātes github repo. Viņi katru dienu atjaunina lietu un nāves gadījumu skaitu.

Tagad ļaujiet veikt nelielu kodēšanu.

Pirmkārt, mums ir jāimportē bibliotēkas datu iegūšanai un informācijas paneļa uzzīmēšanai.

importēt domuzīmi importēt datņu_core_komponenti kā dcc importēt domuzīmes_html_komponenti kā HTML importēt plotly.graph_objs kā iet importēt pandas kā pd

Varat nolasīt datus, norādot URL uz pandas datu ietvaru kā:

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)

Pēc tam mēs varam atbrīvoties no kolonnām lat un jau sen, ka mums tās nav vajadzīgas mūsu darbam. Mēs arī sagrupēsim savus datus pa valstīm. Pēc tam mēs datus transponēsim tā, lai katra valsts būtu vienā kolonnā, un datumi būtu rindās.

df = pd.read_csv (URL) df_cntry = df.groupby (“Valsts / reģions”). summa () df_cntry = df_cntry.drop ([“Lat”, “Long”], 1) df_cntry = df_cntry.T df_cntry.reset_index (vietne = patiesa) df_cntry ['index'] = df_cntry ['index'] .attiecas (pd.to_datetime)

Pēc pēdējās, ilgas nomaiņas un datu ietvara transponēšanas izskatās šādi.

Tagad mums jāpārbauda lietas atklāšanas pirmā diena.

Pirmie datumi, kad covid-19 ir redzams zemāk esošajās valstīs, ir šādi:

Itālija: 1/31/20, Irāna: 2/18/20, Vācija: 1/26/20, Turcija: 3/13/20, US: 2/23/20

Mēs definēsim šos datumus vārdnīcā:

firstday_cntry = {'Itālija': '2/19/20 ",' Irāna ':' 2/18/20", 'Germany': '2/18/20 ",' Turkey ':' 3/13/20" , “ASV”: ”2/23/20"} cntry_names = firstday_cntry.keys ()

Tagad mēs iegūsim lietu skaitu pēc pirmā valsts datuma. Lai to izdarītu, mēs turpmāk izveidosim jaunu datu ietvaru ar nosaukumu “df_new”.

skaitļi = [] i diapazonā (45): numerācija.append (i) new_numbers = [] k, v pirmās dienas_cntry.items (): new_numbers.append (df_cntry [df_cntry ['indekss]]> v] [k ].uzskaitīt())

df_new = pd.DataFrame (new_numbers) df_new = df_new.T df_new.columns = cntry_names df_new ['Day'] = pd.Series (number)

Skaitļi parāda lietu skaitu katrā valstī dienu laikā kopš pirmās lietas. Piemēram, Turcija 7 dienas pirms tam ir atklājusi pirmo gadījumu, tāpēc pēc 7. rindas vērtības būs “nan”.

Tagad ir laiks izveidot informācijas paneli. Lai izveidotu informācijas paneli, mēs izveidosim divas vārdnīcas, ko sauc par etiķetēm un pēdām, izmantojot cilni for cilpai.

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

app = dash.Dash (__ nosaukums__, external_stylesheets = external_stylesheets)

pēdas = [] etiķetes = []

attiecībā uz i cntry_names: traces.append (dict (x = df_new ['Day'], y = df_new [i], text = i, caurspīdīgums = 0,7,

name = i)) labels.append (diktēt ({'etiķete': i, 'vērtība': i}))

Mēs esam gatavi palaist savu informācijas paneli. Izmantojot zemāk esošo kodu, mēs to varam palaist. Pārlūkprogrammā dodieties uz “http://127.0.0.1:8050/”, un jūs redzēsit informācijas paneli.

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

dcc.Graph (id = ”barplot”, attēls = {“dati”: pēdas, “izkārtojums”: go.Layout (nosaukums = “Covid-19”),

)})), html.Div (dcc.Dropdown (iespējas = etiķetes))])

ja __name__ == “__main__”: app.run_server ()

Pēdējais informācijas panelis

Var redzēt, ka 6. dienā lietu skaits ir mazāks:

Itālija: 453, Turcija: 359, Irāna: 95, ASV: 74, Vācija: 17

Secinājums, ja netiks veikti citi piesardzības pasākumi, Turcijai 9. dienā būs vairāk nekā 1000 gadījumu. Mēs varam redzēt, cik labi mūsu valsts cīnās ar korona vīrusu, salīdzinot ar citām valstīm.

9. diena