Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/1c3t3a/covid-19-analysis
Analyses and visualizes WHO data of the COVID-19 pandemic.
https://github.com/1c3t3a/covid-19-analysis
csharp docker-image fastapi hacktoberfest jupyter-notebook matplotlib pandas python3 restful-api
Last synced: about 2 months ago
JSON representation
Analyses and visualizes WHO data of the COVID-19 pandemic.
- Host: GitHub
- URL: https://github.com/1c3t3a/covid-19-analysis
- Owner: 1c3t3a
- License: mit
- Created: 2020-03-21T10:09:07.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-01T04:57:06.000Z (almost 2 years ago)
- Last Synced: 2024-10-16T21:07:30.607Z (2 months ago)
- Topics: csharp, docker-image, fastapi, hacktoberfest, jupyter-notebook, matplotlib, pandas, python3, restful-api
- Language: Jupyter Notebook
- Homepage:
- Size: 141 MB
- Stars: 8
- Watchers: 2
- Forks: 3
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Covid-19-analysis
![Docker](https://github.com/1c3t3a/Covid-19-analysis/workflows/Docker/badge.svg)
![CodeQL](https://github.com/1c3t3a/Covid-19-analysis/workflows/CodeQL/badge.svg)
![Run class snippet](https://github.com/1c3t3a/Covid-19-analysis/workflows/Run%20class%20snippet/badge.svg)
## Introduction
We supply source code to get and process the data about Covid-19 infections around the world over the time. The documentation of the source code be found here:
http://mb.cmbt.de/.
Beside some Jupyter Notebooks, a REST API and Windows and MacOS applications to access it, you will find python classes to automatically download the data from the following organizations:1. World Health Organization (WHO)
> The WHO publishes the data on a dashboard available on the WHO Covid-19 pages.
2. European Centre for Disease Prevention and Control (ECDC)
> Since 14.12.2020 the ECDC publishes only weekly numbers.
3. Our World in Data (OWID)
> According to the OWID website the Covid-19 data provided is coming from the *COVID-19 Data Repository by the Center for Systems Science
and Engineering (CSSE) at Johns Hopkins University* (JHU).4. Robert Koch Institute (RKI)
This is the official source for Covid-19 data in Germany. The data gives an overview of the infections in Germany, from a state view down to a city/county level. The data includes much more attributes as the data of the WHO, ECDC or OWID, and therefore require a different level of visualization. For instance the information about the distribution of Covid-19 infections for different age or gender groups are available via the RKI server. So instead of plotting a graph we are visualizing the German data as interactive maps using HTML to show it in a browser. By moving the mouse it will show the data for a specific city or county. The HTML file holds the data as well as the geo information. Refer to the screenshot below to get an impression of such a visualization.For the data of the countries of the world we provide functions to calculate the following attributes on that raw data:
| Column | Description |
| --- | --- |
| **GeoName** | The name of the country, county or city
| **GeoID** | The GeoID of the country. Refer [to this post](/covid-19-analysis/list-of-geoids-and-countries/) to get a list of GeoIDs and country names.
| **Population** | The population of the country, county or city based on 2019 data.
| **Continent** | The continent of the country. In case of a city it may be the county. In case of a county it may be a federal state or region. In general it's a grouping in a level above the meaning of the GeoName - GeoID combination.
| **DailyCases** | The daily number of confirmed cases.
| **DailyDeaths** | The daily number of deaths of confirmed cases
| **Cases** | The overall number of confirmed infections (here called *cases*) since December 31st. 2019 as published by the data source.
| **Deaths** | The overall number of deaths of confirmed cases.
| **PercentDeaths** | The percentage of deaths of the confirmed cases. This is also called Case-Fatality-Rate (CFR) which is an estimation for the Infection-Fatality-Rate (IFR) which also includes unconfirmed (*hidden* or *dark*) infections
| **DoublingTime** | The time in days after which the number of Cases are doubled
| **CasesPerMillionPopulation** | The number of **Cases** divided by the population in million
| **DeathsPerMillionPopulation** | The number of **Deaths** divided by the population in millionIf you use the data from **Our World in Data** you have additional access to the following attributes:
| Column | Description |
| --- | --- |
| **DailyVaccineDosesAdministered7DayAverage** | New COVID-19 vaccination doses administered (7-day smoothed). For countries that don't report vaccination data on a daily basis, we assume that vaccination changed equally on a daily basis over any periods in which no data was reported. This produces a complete series of daily figures, which is then averaged over a rolling 7-day window. In OWID words this is the new_vaccinations_smoothed value.
| **VaccineDosesAdministered** | Total number of COVID-19 vaccination doses administered. It's the sum of *PeopleReceivedFirstDose* and *PeopleReceivedAllDoses*. In OWID words this is the total_vaccinations value.
| **PeopleReceivedFirstDose** | Total number of people who received at least one vaccine dose. In OWID words this is the people_vaccinated value.
| **PercentPeopleReceivedFirstDose** | The percentage of people of the population who received at least one vaccine dose.
| **PeopleReceivedAllDoses** | Total number of people who received all doses defined by the vaccination protocol. In OWID words this is the people_fully_vaccinated value.
| **PercentPeopleReceivedAllDoses** | The percentage of people of the population who received all doses defined by the vaccination protocol.Other functions will allow you to calculate the following additional attributes:
| Column | Description |
| --- | --- |
| **R** | An estimation of the reproduction number R0. The attribute should finally be low-pass filtered with a kernel size of 7.
| **Incidence7DayPer100Kpopulation** | The accumulated 7-day incidence. That is the sum of the daily cases of the last 7 days divided by the population in 100000 people.
| **DailyCases7** | After calling ```add_lowpass_filter_for_attribute``` with the attribute name **DailyCases** and a filter size of **7** you will get this new attribute that represents the average number of **DailyCases** of the last 7 days. Of course you can filter **all of the attributes** given in the lists above with whatever filter size.Once having the data calculated we generate plots using the *matplot* library such as these:
You can also generate heatmaps using *pygal* such as this:
The latest version as of 2022.01.21 also added functions to generate Folium Choropleth maps with the help of geoPandas. The maps are generated as HTML files and offer some interactions like getting tooltips to show the data of a region. This is an example of such a map:
If you use the data from the **Robert Koch Institute** you can even generate maps showing the number of cases per age group and gender down to a city/county level of Germany as shown here:
All of the maps are also available on our website and they are updated almost every day.
All of the plots can be published using a REST API for which you will find the sources here as well. For your convenience in getting a quick look to the data we offer the REST API on our private server that you can access here: http://mb.cmbt.de/docs
For the quick look we also offer a Windows Forms CSharp application and a MacOS Swift application that are accessing our private server as well. You will find the source code for them here as well and you can download the installer for them here. Here are some screenshots of the applications: