earthkit-data
A format-agnostic Python interface for geospatial data
What it is and what it does
earthkit-data is a Python library that abstracts away format differences in geospatial data, letting you load meteorological and climate datasets from multiple sources and export them to common scientific formats. It sits at the data-handling layer of the broader earthkit ecosystem, providing a consistent API whether you're reading GRIB files (via cfgrib and eccodes), NetCDF (via netcdf4), or other geospatial formats. The library is marked as Graduated under ECMWF's maturity guidelines, indicating production-ready status.
The package is designed for scientists and developers working with weather and climate data. It handles the complexity of format conversion and data access, letting you work with xarray Datasets, pandas DataFrames, or NumPy arrays depending on your workflow. With 20 runtime dependencies—including dask for lazy evaluation, xarray for labeled arrays, and ECMWF's own eccodes for GRIB handling—it brings together the scientific Python ecosystem's best tools for geospatial work.
Use it for:
- Load GRIB or NetCDF meteorological data from ECMWF sources and convert to xarray Datasets for analysis.
- Batch process multiple climate model outputs in different formats into a unified pandas DataFrame.
- Export geospatial data between formats (GRIB to NetCDF, or to NumPy) for downstream modeling or visualization.
- Access remote weather data through earthkit-data's source abstraction without writing format-specific parsers.
- Integrate geospatial data pipelines into dask-based workflows for out-of-core processing.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
earthkit-data provides a unified Python interface to read, transform, and export geospatial data in multiple formats (GRIB, NetCDF, and others) for meteorology and climate applications.
Yes. earthkit-data is actively maintained, production-stable, has no known vulnerabilities, and solves a real problem for meteorology and climate workflows. The Apache-2.0 license is permissive. Install friction is low, though the 20 runtime dependencies (especially eccodes) may require time to resolve; conda installation is recommended. Worth installing if you work with GRIB, NetCDF, or other geospatial formats in scientific Python.
Install
earthkit-data on PyPI
pip
pip install earthkit-datauv
uv add earthkit-datapoetry
poetry add earthkit-dataInstalling earthkit-data
Before you install
Low friction install with a pure-wheel distribution. Active maintenance with a recent release (25 days old) and steady repository activity. Requires Python 3.10 or later and has 20 runtime dependencies including heavy scientific stacks (xarray, netcdf4, dask, eccodes), which may take time to resolve but are well-established packages.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; you must retain copyright and license notices in distributions.
Quickstart
pip install earthkit-data
import earthkit.data as ekd
data = ekd.from_source("sample", "test.grib")
arr = data.to_numpy()
df = data.to_pandas()
dataset = data.to_xarray()
Requires Python 3.10+. eccodes and eccodeslib are compiled dependencies that may require system libraries (libeccodes); conda installation recommended for easier binary resolution.
Verify before relying
- Whether optional dependencies beyond the 20 listed runtime deps are needed for specific data formats or sources.
- Performance characteristics when handling large multi-file datasets or streaming scenarios.
- Compatibility matrix with specific GRIB/NetCDF versions or ECMWF data services.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 20 — cfgrib, dask, deprecation, earthkit-utils, eccodes, eccodeslib, eckit, entrypoints, filelock, jinja2, jsonschema, lru-dict, markdown, multiurl, netcdf4, pandas, pdbufr, pyyaml, tqdm, xarray |
| Maintenance | actively maintained — 25 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 82,061/month — #14,187 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: earthkit_data-1.1.0-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
earthkit-utilsProvides shared utilities and helper functions…
permissive · top 15,000 on PyPI
earthkit-meteoComputes meteorological quantities (potential…
permissive · top 15,000 on PyPI
cfgribcfgrib maps GRIB meteorological data files to…
permissive · top 5,000 on PyPI
pygribReads and writes GRIB meteorological data files…
permissive · top 15,000 on PyPI
eccodeslibeccodeslib provides Python bindings to decode…
unclear · top 5,000 on PyPI
cdsapicdsapi is a Python client for the Copernicus…
permissive · top 15,000 on PyPI
kerchunkKerchunk extracts metadata from chunked,…
permissive · top 15,000 on PyPI
ecmwf-datastores-clientPython client for the ECMWF Data Stores Service…
permissive · top 15,000 on PyPI
MetPyMetPy provides tools for reading, visualizing,…
permissive · top 15,000 on PyPI
copernicusmarineCopernicusmarine provides a CLI and Python API…
unclear · top 15,000 on PyPI