https://github.com/mijisu0103/ukhsa-dashboard-project
Simple dashboard that downloads and displays the data about infectious diseases (Influenza, Rhinovirus and COVID-19) from the UK Health Security Agency (UKHSA) dashboard.
https://github.com/mijisu0103/ukhsa-dashboard-project
data-analysis data-visualisation ipywidgets python voila-dashboard
Last synced: 4 months ago
JSON representation
Simple dashboard that downloads and displays the data about infectious diseases (Influenza, Rhinovirus and COVID-19) from the UK Health Security Agency (UKHSA) dashboard.
- Host: GitHub
- URL: https://github.com/mijisu0103/ukhsa-dashboard-project
- Owner: mijisu0103
- Created: 2024-11-30T04:29:33.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-01-31T16:22:05.000Z (8 months ago)
- Last Synced: 2025-03-26T23:17:31.847Z (7 months ago)
- Topics: data-analysis, data-visualisation, ipywidgets, python, voila-dashboard
- Language: Python
- Homepage:
- Size: 579 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# About this Repository ℹ️This repository contains the project I did as a part of the coursework for ECS780P - Computer Programming.
The assignment required me to develop a simple dashboard that downloads and displays the UK Government's infectious diseases [data](https://ukhsa-dashboard.data.gov.uk/) published by the UK Health Security Agency ([UKHSA](https://www.gov.uk/government/organisations/uk-health-security-agency)).Click the below button to launch this repository as a Binder:
Click [here](https://hub.binder.curvenote.dev/user/mijisu0103-ukhs-shboard-project-80h0jz5g/voila/render/DIY%20Dashboard.ipynb) to render the dashboard template (```DIY Dasboard.ipynb```) with Voila
- Sometimes, it takes a while to load the dashboard or execution gets stuck at a certain point
- In this case, simply spam refreshing button until it loads the dashboard
## Motivation ⚙️
### Chosen Disease Data
- Influenza
- Rhinovirus (Common Cold)
- COVID-19
### Motivation of Choosing These Three Diseases
As the weather gets colder, it is common for people to feel unwell. Whether it is a cough, sore throat, or fatigue, it is easy to wonder if one has caught a cold (Rhinovirus) or flu (Influenza) or COVID-19. This is because all three share similar symptoms. This overlap can make it difficult for one to determine which illness one might have. For this reason, I decided to compare and contrast these three diseases using data from the UKHSA.
### What I am doing specifically using such data
To be specific, I am using these APIs for this project:
- Influenza percentage of positive PCR tests in a 7 day period
- Rhinovirus(Common cold) percentage of positive PCR tests in a 7 day period
- Covid-19 percentage of positive PCR tests in a 7 day rolling period
The first two APIs provide the weekly average percentage of positive PCR tests for Influenza and Rhinovirus, while the third API offers the daily percentage of positive PCR tests for COVID-19. To ensure consistency in the comparison, adjusting the data from the third API to align with the weekly average format used by the first two is required. Eventually, the weekly average percentage of positive PCR tests for Influenza, Rhinovirus, and COVID-19 will be compared.
The UKHSA has been experiencing technical issues in updating the percentage of positive PCR tests for COVID-19, which has resulted in "NaN" (Not a Number) values in the data. I have chosen not to fill these missing values with zeros, as doing so could misrepresent the actual situation and lead to inaccurate conclusions. While I am transforming the daily data to a weekly format to compare it with the Influenza and Rhinovirus data, this transformation does not alter the underlying data itself — it is only the aggregation method. By leaving the NaN values unchanged, I have tried to maintain the integrity of the analysis and ensure that any gaps in reporting are accurately reflected.
It is important to note that, as I am using live APIs, the data is continually updated. Once the UKHSA resolves the technical issues and updates the data, the missing values (NaNs) will be replaced with the most current information. Therefore, the NaN values are temporary, and the analysis will reflect the updated data when it becomes available.
## Environment 👩🏻💻
![]()
![]()
## Stack 🛠️
![]()
## Repository Structure 🌲
```bash
.
├── DIY Dashboard.ipynb
├── binder
│ └── requirements.txt
├── covid19.json
├── covid19_2.json
├── influenza.json
├── rhinovirus.json
├── timeseriesdf.pkl
└── README.md
```
## Reflection 🪞
Developing the dashboard to visualise data on Influenza, Rhinovirus, and COVID-19 was a rewarding experience that combined data analysis, visualisation, and interactive web technologies. The project required transforming daily COVID-19 data into weekly averages to align with Influenza and Rhinovirus data, ensuring consistency for comparison. Handling "NaN" values in COVID-19 data, caused by UKHSA technical issues, presented an ethical challenge; I chose not to fill these gaps to preserve data integrity, accurately reflecting incomplete reporting while ensuring the dashboard adapts as updates become available.Using Python, I leveraged pandas for data manipulation, matplotlib for visualisation, and iPywidgets for interactivity. Deploying with Voila and Binder transformed the project into an accessible web application. These tools highlighted the challenges of harmonising datasets and working with live APIs, emphasising the need for adaptability and clear documentation of limitations.
This project reinforced critical lessons in data integrity, technical skill development, iterative problem-solving, and accessibility. While the dashboard effectively compares the selected diseases, future improvements could include integrating additional metrics (e.g., hospitalisation rates) and enhancing interactivity. Overall, the project demonstrated the importance of building reliable, flexible, and user-friendly tools that reflect real-world complexities.