Hvordan analyseres COVID-19-data ved hjælp af Python?

(Del - 1/5) Introduktion & Hvor mange nye sager i Indien?

Foto af visuals på Unsplash

COVID-19 har ikke brug for nogen introduktion med så meget af data, der flyder rundt omkring det, det være sig forskningsartikler, online tidsskrifter, nyhedsdækning, uddannelsesblogger, regeringsbeslutninger, inspirerende inddrivelser på den ene side og den anden side skaber uvidende irrationelle og ulogiske kortfilm , memes og grafik. Vi kan ikke gøre meget ved, hvem der gør hvad, men når vi tænker på de faktiske data, der kommer fra feltet, er der bestemt et spørgsmål, der kommer til os - ”hvordan man analyserer dataene”. Der er allerede mange smukke dashboards på plads, som er enten statiske eller meget interaktive (nogle er crowd-sourced, få er ikke så autentiske, og meget få er ægte data fra top-notch).

Som enhver datavisualisering har nogle fordele og ulemper, er det begrænset til at se, hvad nogen har implementeret, og vi kan muligvis ende med at bruge flere dashboards til at konkludere på et datapunkt. Hvad hvis vi har magten til at sætte vores egen tankeproces og blande den i et output, vi ønsker, ved hjælp af Python?

I slutningen af ​​serien vil jeg se, hvad jeg skal se snarere end hvad der allerede er tilgængeligt og vises. Lad os sige det på en anden måde fra et datavidenskabeligt perspektiv, tilpasse dataene med variablerne og desuden få informationen automatisk for den bestemte kategori til min indbakke!

Dette er hvad vi skal gøre nu! Så vi er nødt til at udregne en plan for "Data" og "Python". I slutningen af ​​5 artikler i denne serie vil vi være i stand til at tilpasse og sende mange rapporter ved hjælp af e-mail, for nu, lad os flytte med et forenklet mål.

Nu hvor vi ved, hvad vi har brug for, lad os sætte en enkel tjekliste på den.

Har vi data til at starte med analysen og identificere tendenser? Hvis der findes data, kan de desinficeres eller direkte forbruges? Hvis ikke, hvad er den faktiske kilde til sandhed, vi skal undersøge? Hvor meget datasæt, der skal indsamles til formålet med dette arbejde? Hvilke datapunkter er faktisk nyttige til analysens formål?

Dette er fra datasiden. Lad os komme til Python.

Hvilke ting har jeg brug for fra Python, nu?

Hvilken IDE er nødvendig for at programmere og begynde at udvikle? Hvilke ting er nødvendigt for at manipulere browseren og sende kommandoer? Hvilke pakker er nødvendige for at skrabe webelementerne? Hvilke pakker er nødvendige for at sende en e-mail? Hvilke pakker er nødvendige for at tilpasse graferne?

Som et første trin, lad os begynde at besvare hver af disse. I stedet for at gentage de samme spørgsmål, lad os svare på alle disse på en enkel måde. Ja, vi har vores datakilde, der er ægte fra https://www.worldometers.info/, vi vil sanere dataene som krævet, men vi kan med sikkerhed antage, at de allerede er sendt fra ægte kilder, og dette vil være den eneste sandhedskilde, Brug hele datasættet og start med at udforske alle mulige indstillinger. Og for Python kan vi muligvis bruge Atom, Visual Studio Code, Pycharm osv. Til at vælge en blandt mange så stærke IDE'er. Sørg for, at det virtuelle miljø er indstillet korrekt. Yderligere har vi brug for Selen for Py til at manipulere webbrowser, da vores sandhedskilde er et websted. Og nogle flere pakker som Matplotlib (til at tilpasse grafer), Anmodninger (URL-operationer), Win32 (outlook-klient).

Næste skridt skal du navigere til webstedet https://www.worldometers.info/ og forsøge at forstå komponenterne i hvert element under her. Den vigtigste ting på dette websted er tabellen, der indeholder datapunkterne i 8 kolonner → Land, samlede sager, nye sager, samlede dødsfald, samlet gendannet, aktive sager, alvorlige / kritiske, samlede sager pr. 1M befolkning.

Næste trin, okay, lad os bremse nu, og da dette er en række analyseblogger, vil vi forsøge at besvare et meget simpelt spørgsmål i denne artikel indtil videre. Senere vil vi begynde at bygge videre på forskellige grafer med det tilgængelige datasæt.

Så nu faktisk næste trin :),

lad os prøve at tjekke "Hvor mange nye sager der rapporteres i Indien?", For at hente disse data ved hjælp af Python, lad os forestille os selv, hvad vi gør manuelt → Klik på webstedet, naviger gennem tabellen, hvor de findes på websiden, og se på kolonnen 'Nye sager', som er kolonne 2 i betragtning af indekset 0. kolonne 'Land' som beskrevet ovenfor, og at dataene er de, vi har brug for.

Kom til Python IDE, se på dit python-miljø og installer, hvis der ikke er installeret nogen nødvendige pakker, bare brug nedenstående kode trin for trin.

Afslut importen →

fra dateutil.utils importerer i dag fra selenimportwebdriver

Og så skal du sørge for at påkalde webstedet med chrome driver (dette er must, som vi har brug for at navigere og manipulere input ved hjælp af Selenium chrome driver).

driver = webdriver.Chrome () driver.get ('https://www.worldometers.info/coronavirus/')

Her kommer den vigtigste del, hvor brug af Xpath af webelement ved hjælp af denne webdriver, vi bliver nødt til at navigere til den krævede række, dvs. vores spørgsmål "nye tilfælde i Indien". Datatabellen kan identificeres entydigt med id'et main_table_countries_today ' , hvis vi trykker på F12 og udviklerindstillinger, navigerer, vil du se dette, og 'tbody [1]' er givet for at sikre, at vi får kroppen i tabellen i stedet for overskrifter fra 'th', dybest set html-tagindholdet parsning. Yderligere borer vi det ned for at få det land, vi er interesseret i, og derefter den faktiske række, der er indlejret som en del af kroppen, og derved 2 niveauer nede med './ ..'.

data_table = driver.find_element_by_xpath ('// * [@ id = "main_table_countries_today"] / tbody [1]') country_element = data_table.find_element_by_xpath ("// td [indeholder (tekst (), 'Indien')]") country_row_element = country_element.find_element_by_xpath ("./ ..")

Nogle dataoperationer deler nu bare dataene adskilt med mellemrum, og som forklaret tidligere er kolonner 0–8 vores data og Nye tilfælde er indeks2. Så vælg bare disse data og udskriv. Meget enkel, ikke?

raw_data_country = country_row_element.text.split ("") total_new_cases = raw_data_country [2] print ('Total New Cases in India ->' + total_new_cases) print ('rapport genereret på ->' + str (i dag (). dato) ()))

Outputet i dag:

Men stemmer det overens med de faktiske tabeldata, lad os tjekke det ud ...

Okay, det er alt for nu, vi fortsætter denne serie og sørger for, at du er udstyret med alle typer dataanalyse med mere nysgerrige spørgsmål og måder til at løse dem ved hjælp af Python.

Lad os bede om, at alle COVID-19 berørte mennesker får helbredelse af god fart!

Sidst men ikke mindst: Spred ikke rygter !!

Lad os stoppe med at sprede coronavirus !!!

BO HJEM, VÆR SIKKER og hold LÆRING !!

Kreditter: Der er mange ressourcer, der hjalp mig med dette, herunder CDC-webstedet, WHO.int, Python-dokumentation, mange andre libs-referencer.

Hvis du har ønsket indlægget og gerne vil læse hele serien, følg mig @ https: //www.linkedin.com/in/pavann/ og ping mig efter kildekode, hvis du er interesseret, og glem ikke at klappe, det holder mig energi.