Air quality
Pollution as data: station networks and their units, indices, satellite NO2, models, interpolation, land-use regression and population exposure.
Europe publishes hourly measurements from thousands of monitors, a satellite maps nitrogen dioxide over the whole continent every day, and a model fills in everything between. Almost none of it can be read at face value. Marylebone Road’s 2023 NO2 is 41.6 in µg/m³ and 21.8 in ppb, over the EU limit in one unit and comfortably under it in the other; the UK air quality index rates North Kensington’s year as worse than the kerb 4 km away, because the index is mostly about ozone.
The spatial traps are sharper still. Monitoring networks are designed rather than sampled, so half of Berlin’s stations describe their own street and interpolating them paints discs around every monitor. A satellite pixel covers 19 km² and tracks the background station (r = 0.68) far better than the kerb (0.30). A 10 km model agrees with the stations suspiciously well because it assimilates them. And exposure figures change with the reporting scale: the same field puts 52% of Berliners above a threshold by grid cell and 34% by district.
The concepts below settle units, indices, networks, meteorology, satellite columns and exposure; the how-to guides download and analyse real station data from London and Berlin, map Sentinel-5P, evaluate CAMS, fit a land-use regression and weight by population; and the fixes are the five ways these numbers go wrong without looking wrong.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Download Air Quality Station Data in Python
- How to Analyse an Air Quality Time Series in Python
- How to Compute an Air Quality Index in Python
- How to Make a Pollution Rose in Python
- How to Interpolate Air Quality Station Data in Python
- How to Build a Land-Use Regression Model for NO2 in Python
Show every how-to guide in this topic
- How to Compare CAMS Air Quality with Monitoring Stations in Python
- How to Map Sentinel-5P NO2 in Python
- How to Calculate Population-Weighted Pollution Exposure in Python
- How to Map Wildfire Smoke Plumes from NOAA HMS in Python
- How to Estimate How Many People Were Under Wildfire Smoke in Python
- How to Compare Asthma Estimates With Air Pollution in Python
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
Related topics
Subjects that keep coming up alongside this one, most overlap first.