Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- Enough memory for one annual pollutant ZIP file
Quality-assured daily ambient air-monitor measurements for building historical pollution, compliance-context, and station comparison tools.
From source to product signal
AirData publishes daily summaries from EPA's regulatory Air Quality System. Start with one pollutant, one year, and one state. Monitor coverage and methods change, recent values may not be certified, and these historical regulatory records differ from preliminary operational AirNow data.
Install the packages, then run the notebook cell.
python -m pip install pandas
import pandas as pd
url = "https://aqs.epa.gov/aqsweb/airdata/daily_88101_2025.zip"
daily = pd.read_csv(url, dtype={"State Code": "string", "County Code": "string", "Site Num": "string"})
california = daily[daily["State Code"] == "06"].copy()
california["Date Local"] = pd.to_datetime(california["Date Local"])
print(california[["Date Local", "County Code", "Site Num", "Arithmetic Mean", "Units of Measure"]].head(20))Test a useful signal
Review 2025 daily PM2.5 summaries for California monitoring sites.
U.S. Environmental Protection Agency is a government source. Last verified 2026-08-13. Temporal coverage: annual pollutant files from 1980-present with parameter-specific coverage.