Source: Economics Observatory
UK Inflation and Economic Growth: Evidence from Three Decades
The Bank of England should maintain its 2% inflation target to avoid the economic contractions that historically accompany high inflation episodes.
Data confirms inflation spikes in 1990-91, 2008-09, and 2020-22 coincided with sharp GDP contractions—whether before, during, or after—validating low inflation targets.
Data Sourve: Inflation YoY (%) |
GDP YoY (%) (Office for National Statistics)
Code: Graph 1 |
Graph 2
Version 1: Original Chart

Version 2: Replicated Chart
Version 3: Improved Chart
This improved version starts the axis at zero with consistent scaling, making the dramatic difference visible: Jeremy Corbyn's engagement was more than 7 times higher than the Labour Party's. A single color scheme replaces the original's unexplained multiple colors, which added confusion rather than clarity.
API Functional Description: The World Bank API uses a base URL of "http://api.worldbank.org/v2/", followed by country/region codes, indicator code, and query parameters. For this chart, I used seven regional codes (EAS, ECS, LCN, MEA, NAC, SAS, SSF) representing major world regions, combined with indicator code SP.DYN.IMRT.IN for infant mortality rate per 1,000 live births.
Three query parameters customize the data: (1) format=json returns JSON format, (2) per_page=500 retrieves sufficient records, and (3) date=1990:2050 specifies the year range while ensuring future updates are captured automatically.
The complete URL used:
http://api.worldbank.org/v2/country/EAS;ECS;LCN;MEA;NAC;SAS;SSF/indicator/SP.DYN.IMRT.IN?format=json&per_page=500&date=1990:2050
(This live API connection automatically updates when the World Bank publishes new data)
Code: CC5 API Task
For this chart, I scraped Premier League table from Wikipedia, cleaned data in Colab, exported to CSV on GitHub, visualized attack-defense balance using Vega-Lite diverging bars.
View Google Colab Notebook
Code: CC5 Scraper Task
Daily chocolate prices are simplified by grouping observations by week and supermarket. For each week, I compute the 25th and 75th percentiles across stores and plot the interquartile range, capturing how price dispersion evolves over time.
This analysis explores the price dispersion of chocolate products across different retailers in the UK. By visualizing the price ranges and averages, we can identify pricing strategies and market positioning.
Daily whisky prices are reduced to store-level median prices using observations from the last 60 days. I then plot each supermarket’s deviation from the overall median price, highlighting cross-store differences in pricing strategies.
I created two interactive visualisations analysing the recovery of international visitor arrivals to Singapore following the COVID-19 shock, using monthly arrivals data by place of residence from the Singapore Department of Statistics (SingStat).
The data were cleaned and reshaped in Python, and arrivals were indexed to a 2019 baseline (2019=100) to allow comparisons across markets and over time.
View notebook.
The first chart is an interactive indexed line chart that allows users to toggle between market groups and metrics. It shows the sharp collapse in early 2020, followed by a gradual and volatile recovery after borders reopened in 2022.
The chart highlights substantial differences in recovery dynamics across regions, particularly the more delayed and volatile rebound from Greater China compared to Southeast Asia.
The second chart is an interactive world choropleth map with a quarterly slider, enabling users to explore how recovery evolved geographically over time. The map reveals that recovery was highly uneven in the early reopening phase: by 2021Q4, Bangladesh, India, and Myanmar showed the earliest signs of recovery, while most other countries remained close to zero.
This spatial pattern underscores the role of asynchronous border policies and regional mobility in shaping Singapore’s tourism recovery.
Hypothesis: Singapore's tourism recovery exhibits systematic variation: markets with larger pre-pandemic shares demonstrate lower recovery performance, creating a strategic portfolio tension between volume and growth.
Finding: Southeast Asia and Greater China (60% of 2019 arrivals) underperform at 82-87% recovery, while smaller markets exceed 100%, confirming an inverse volume-performance relationship.
Hypothesis: Singapore's source markets cluster into distinct recovery archetypes based on performance, speed, volatility, and market size, requiring differentiated tourism policy approaches.
X Matrix Transformation:
Input: 9 regions × 5 features (current recovery index, time to 50%, volatility, 2019 market share, growth slope)
Standardization: Z-score normalization using sklearn.preprocessing.StandardScaler
Output: Standardized feature matrix for clustering analysis.
Finding: K-means identifies three segments: Slow Giant (China, 38-month recovery), High-Volume Laggards (SE/South Asia, 84.7% performance), Diverse Performers (six regions, 96.3% average). Silhouette score: 0.269.