Fantazma2211/geomagnetic-kp-index
Geomagnetic Kp Index (3-Hourly) Credit: NASA Part of a dataset collection on Hugging Face. Dataset description 3-hourly geomagnetic Kp index from NOAA SWPC, measuring planetary magnetic disturbance on a 0-9 scale. Updated daily, growing incrementally. The Kp index is a quasi-logarithmic scale (0-9) that quantifies geomagnetic disturbance based on magnetometer readings from 13 ground stations worldwide. It is the basis for the NOAA G-scale storm… See the full description on the dataset page: https://huggingface.co/datasets/Fantazma2211/geomagnetic-kp-index.
Geomagnetic Kp Index (3-Hourly)
<div align="center"> <img src="banner.jpg" alt="Aurora borealis blankets the Earth, seen from the ISS" width="400"> <p><em>Credit: NASA</em></p> </div>
Part of a [dataset collection](https://huggingface.co/collections/juliensimon/space-weather-datasets-69c24cae98f1666f2101ca70) on Hugging Face.
Dataset description
3-hourly geomagnetic Kp index from NOAA SWPC, measuring planetary magnetic disturbance on a 0-9 scale. Updated daily, growing incrementally.
The Kp index is a quasi-logarithmic scale (0-9) that quantifies geomagnetic disturbance based on magnetometer readings from 13 ground stations worldwide. It is the basis for the NOAA G-scale storm classification: quiet (Kp 0-4), G1 minor (Kp=5), G2 moderate (Kp=6), G3 strong (Kp=7), G4 severe (Kp=8), G5 extreme (Kp=9).
The Kp index was introduced by Julius Bartels in 1949 and remains one of the most widely used geomagnetic activity measures in space physics and space operations. It is computed every 3 hours from the maximum deviation of the horizontal magnetic field component at each of 13 subauroral magnetometer stations, after removing the quiet-day baseline variation. The conversion from linear nanotesla deviations to the quasi-logarithmic K scale means that each unit step represents roughly a doubling of disturbance amplitude: K=5 corresponds to about 70 nT variation, while K=9 corresponds to over 500 nT.
Operationally, Kp is the primary input to the NOAA G-scale storm classification used by satellite operators, power grid managers, and aviation authorities. The associated Ap index (a linearized daily average derived from Kp) is a required input for NRLMSISE-00 and JB2008 thermospheric density models, which drive satellite drag computation. During a G3 storm (Kp=7), atmospheric drag at 400 km altitude can increase by a factor of 2-3, causing significant orbital decay for LEO assets including the ISS and Starlink satellites.
This dataset is suitable for time-series forecasting, tabular classification tasks.
Schema
Quick stats
- 461 readings (2026-03-17 to 2026-05-13)
- Average Kp: 2.3, Maximum: 7.0
- 28 storm-level readings (Kp >= 5)
Usage
from datasets import load_dataset
ds = load_dataset("juliensimon/geomagnetic-kp-index", split="train")
df = ds.to_pandas()from datasets import load_dataset
ds = load_dataset("juliensimon/geomagnetic-kp-index", split="train")
df = ds.to_pandas()
# Storm events
storms = df[df["kp_value"] >= 5]
print(f"{len(storms)} storm readings")
# Kp time series
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(12, 4))
ax.plot(df["datetime"], df["kp_value"], linewidth=0.5)
ax.axhline(5, color="red", linestyle="--", alpha=0.5, label="Storm threshold (Kp>=5)")
ax.set_ylabel("Kp Index")
ax.set_title("Geomagnetic Kp Index")
ax.legend()
plt.tight_layout()
plt.show()
# Storm level distribution
df["storm_level"].value_counts().plot.bar()
plt.title("Kp Storm Level Distribution")
plt.show()Data source
https://www.swpc.noaa.gov/products/planetary-k-index
Update schedule
Daily at 15:30 UTC
Related datasets
If you find this dataset useful, please consider giving it a like on Hugging Face. It helps others discover it.
About the author
Created by Julien Simon — AI Operating Partner at Fortino Capital. Part of the Space Datasets collection.
Citation
@dataset{geomagnetic_kp_index,
title = {Geomagnetic Kp Index (3-Hourly)},
author = {juliensimon},
year = {2026},
url = {https://huggingface.co/datasets/juliensimon/geomagnetic-kp-index},
publisher = {Hugging Face}
}