Calidad del Aire
Promedios diarios de contaminantes atmosféricos (MP2.5, MP10, SO2, NO2, CO, O3) por estación de monitoreo, desde el Sistema de Información Nacional de Calidad del Aire (SINCA) del Ministerio del Medio Ambiente.
Fuente y licencia
- Fuente: SINCA — Ministerio del Medio Ambiente (API JSON pública + CSV por estación)
- Formato de origen: JSON diario con inventario de estaciones y series horarias de 24 h
- Reutilización: datos públicos MMA sin licencia explícita; citar fuente oficial
- URL: https://sinca.mma.gob.cl/
Esquema
fecha (YYYY-MM-DD), id_estacion, nombre_estacion, codigo_region, codigo_comuna, nombre_comuna, latitud, longitud, codigo_contaminante (mp25 | mp10 | so2 | no2 | co | o3), nombre_contaminante, unidad (ug/m3 | ug/m3N | ppbv | ppmv), valor_promedio_diario, valor_max_horario, horas_validas, estado_dato (definitivo | provisional), fuente, url_fuente, fecha_fuente
Grano: una fila por (fecha, estación, contaminante) con días completos o parciales según horas válidas.
Uso
from chile_hub import ChileHub
import polars as pl
hub = ChileHub()
df = hub.load_polars("calidad_aire")
# Peor MP2.5 diario por comuna (última fecha disponible)
ultima = df["fecha"].max()
peor = (
df.filter(
(pl.col("fecha") == ultima) & (pl.col("codigo_contaminante") == "mp25")
)
.sort("valor_promedio_diario", descending=True)
.head(10)
)
print(peor)
SELECT fecha, codigo_comuna, avg(valor_promedio_diario) AS mp25
FROM 'data/normalized/calidad_aire.parquet'
WHERE codigo_contaminante = 'mp25'
GROUP BY 1, 2 ORDER BY 1 DESC, 3 DESC;
Limitaciones
- Cobertura parcial por diseño (~19% de comunas): solo las comunas con estación de monitoreo tienen datos (~65 de 346). Ausencia de una comuna NO significa aire limpio, sino sin medición. No interpolar.
- Serie incremental desde la primera cosecha: el JSON del SINCA solo expone 24 h; no hay backfill histórico. La serie crece un día por build diario.
- Validación nivel 1: los datos en línea son provisorios y el operador puede revisarlos;
estado_datoes"provisional"para la fecha en curso y"definitivo"para días cerrados. - Representatividad puntual: la medición representa el volumen de aire en el punto de la estación, no necesariamente toda la comuna (especialmente comunas extensas o con varias fuentes).
- Unidades por contaminante: MP2.5/MP10 en µg/m³, SO2 en µg/m³N, NO2/O3 en ppbv, CO en ppmv. No comparar valores crudos entre contaminantes.
Registro de cambios
- v1 (2026-09-15): Primera versión. Serie incremental desde 2026-09-13, ~125 estaciones, 6 contaminantes.
Schema (auto-generado desde contracts/datasets/calidad_aire.schema.json)
| Columna | Tipo | Ejemplo | Requerida | Nota |
|---|---|---|---|---|
fecha |
VARCHAR |
"2026-09-14" |
Sí | PK |
id_estacion |
VARCHAR |
"271" |
Sí | PK |
nombre_estacion |
VARCHAR |
"Quilicura" |
Sí | — |
codigo_region |
VARCHAR(2) |
"13" |
Sí | — |
codigo_comuna |
VARCHAR(5) |
"13144" |
Sí | — |
nombre_comuna |
VARCHAR |
"Quilicura" |
Sí | — |
latitud |
DOUBLE |
-33.36 |
Sí | — |
longitud |
DOUBLE |
-70.73 |
Sí | — |
codigo_contaminante |
VARCHAR |
"mp25" |
Sí | PK |
nombre_contaminante |
VARCHAR |
"MP 2,5" |
Sí | — |
unidad |
VARCHAR |
"ug/m3" |
Sí | — |
valor_promedio_diario |
DOUBLE |
18.4 |
Sí | — |
valor_max_horario |
DOUBLE |
42.0 |
Sí | — |
horas_validas |
INTEGER |
24 |
Sí | — |
estado_dato |
VARCHAR |
"definitivo" |
Sí | — |
fuente |
VARCHAR |
"SINCA — Ministerio del Medio Ambiente" |
Sí | — |
url_fuente |
VARCHAR |
"https://sinca.mma.gob.cl/index.php/json/listadomapa2k19/" |
Sí | — |
fecha_fuente |
VARCHAR |
"2026-09-15" |
Sí | — |