CoolFace
Datasetpublic

juliensimon/solar-system-moons

Solar System Moons Credit: NASA/JPL-Caltech Part of a dataset collection on Hugging Face. Dataset description Every known natural satellite of planets and dwarf planets in the Solar System with orbital elements, physical parameters, and discovery data. Sourced from NASA JPL Solar System Dynamics. This dataset catalogs all recognized natural satellites orbiting the major planets (Earth through Neptune) and the dwarf planet Pluto, as maintained by NASA's… See the full description on the dataset page: https://huggingface.co/datasets/juliensimon/solar-system-moons.

sourceHugging Facecc-by-4.0updated 2d agoView on Hugging Face
0likes1.4kdownloads
Dataset Card

Solar System Moons

<div align="center"> <img src="banner.jpg" alt="Jupiter's Great Red Spot and the Galilean satellites" width="400"> <p><em>Credit: NASA/JPL-Caltech</em></p> </div>

Part of a [dataset collection](https://huggingface.co/collections/juliensimon/planetary-science-datasets-68214dab0f1e965e6741fcd2) on Hugging Face.

Dataset description

Every known natural satellite of planets and dwarf planets in the Solar System with orbital elements, physical parameters, and discovery data. Sourced from NASA JPL Solar System Dynamics.

This dataset catalogs all recognized natural satellites orbiting the major planets (Earth through Neptune) and the dwarf planet Pluto, as maintained by NASA's Jet Propulsion Laboratory (JPL) Solar System Dynamics group. Each record combines discovery circumstances, mean orbital elements, and — where available — physical parameters (radius, density, gravitational parameter).

The dataset merges three authoritative JPL tables:

  • Discovery circumstances — name, parent body, year, discoverer
  • Mean orbital elements — semi-major axis, eccentricity, inclination, period
  • Physical parameters — mean radius, GM, density (for major moons)

The natural satellites of the solar system span an extraordinary range of sizes, compositions, and dynamical histories. At one extreme, Jupiter's Ganymede (radius ~2,634 km) is larger than Mercury and possesses its own intrinsic magnetic field. At the other, many recently discovered irregular satellites are only a few kilometers across and occupy distant, highly inclined or retrograde orbits that betray their origin as captured objects from the primordial small-body population. The dynamical groupings recorded in this dataset — Galilean, Himalia, Ananke, Carme, Pasiphae for Jupiter; Inuit, Gallic, Norse for Saturn — reflect distinct capture and collisional fragmentation events that occurred during the chaotic early evolution of the giant planet systems.

Several moons in this catalog are among the most scientifically compelling worlds in the solar system. Europa's subsurface ocean beneath its icy shell is a prime target for astrobiology, while Enceladus actively vents water vapor and organic molecules through its south polar tiger stripes. Titan maintains a dense nitrogen-methane atmosphere with a complete hydrological cycle of methane rain, rivers, and lakes. Io is the most volcanically active body known, driven by intense tidal heating from its orbital resonance with Europa and Ganymede. Triton, captured by Neptune from the Kuiper Belt, exhibits active nitrogen geysers and a retrograde orbit that is gradually decaying.

The orbital elements in this dataset encode fundamental information about satellite dynamics: resonant relationships (such as the 1:2:4 Laplace resonance of Io, Europa, and Ganymede), tidal evolution timescales, and the stability boundaries that separate regular from irregular satellite populations. Combined with physical parameters like density and radius, these data enable studies of satellite formation, internal structure, and the delivery of volatiles to the outer solar system.

Schema

ColumnTypeDescriptionSampleNull %
nameobjectIAU name or provisional designationMoon0.0%
parent_bodyobjectParent planet or dwarf planetEarth0.0%
iau_numberobjectIAU Roman numeral designationI0.0%
provisional_designationobjectSurvey designation (e.g. S/2003 J2)0.0%
discovery_yearInt64Year of discovery18770.9%
discovererobjectDiscoverer(s) or spacecraft mission0.0%
groupobjectDynamical group/family (e.g. Galilean, Himalia, Norse)Regular2.9%
semi_major_axis_kmfloat64Mean orbital semi-major axis (km); ranges from ~128,000 km (Amalthea/Jupiter) to ~23.5 million km (Neso/Neptune)384400.02.4%
eccentricityfloat64Mean orbital eccentricity; regular (prograde) moons: <0.1; irregular (captured) moons: often 0.1–0.70.05542.4%
inclination_degfloat64Mean orbital inclination to the planet's equatorial plane (degrees, 0–180); regular moons: <5°; irregular moons: can exceed 90° (retrograde); see also is_retrograde5.162.4%
orbital_period_daysfloat64Sidereal orbital period (days); range ~0.29 days (Metis/Jupiter) to ~9,000 days (distant irregular moons); negative values indicate retrograde direction in some source conventions27.3222.4%
arg_periapsis_degfloat64Argument of periapsis of the moon's orbit (degrees, 0–360) at the reference epoch318.152.4%
mean_anomaly_degfloat64Mean anomaly at the reference epoch (degrees, 0–360); used together with other elements to compute position135.272.4%
long_ascending_node_degfloat64Longitude of the ascending node (degrees, 0–360) at the reference epoch125.082.4%
epochobjectReference epoch for the orbital elements in Barycentric Dynamical Time (TDB) format2000-01-01.52.4%
mean_radius_kmfloat64Mean radius (km); available for major/well-characterised moons only; range <1 km (small inner moons) to 2,634 km (Ganymede); null for most irregular moons1737.489.8%
diameter_kmfloat64Mean diameter (km) = 2 × meanradiuskm; derived column; null when radius is null3474.889.8%
gm_km3s2float64Gravitational parameter GM = G × mass (km³/s²); null for moons without a reliable mass determination4902.889.8%
mean_density_gcm3float64Mean bulk density (g/cm³); icy moons: ~1.0–2.0 g/cm³; rocky moons: ~2.5–3.5 g/cm³; null when mass and radius are not both known3.34490.4%
is_retrogradebooleanTrue if orbital inclination > 90° (retrograde orbit); most retrograde moons are captured irregular bodiesFalse2.4%
jpl_codeobjectJPL Horizons numeric satellite identifier used to query ephemerides3012.4%

Quick stats

  • 450 total moons
  • Saturn: 285 moons
  • Jupiter: 111 moons
  • Uranus: 30 moons
  • Neptune: 16 moons
  • Pluto: 5 moons
  • Mars: 2 moons
  • Earth: 1 moons
  • 439 moons with orbital elements
  • 46 moons with measured radius
  • 297 retrograde moons (inclination > 90°)
  • Largest moon: Ganymede (Jupiter, radius 2,631.2 km)

Usage

python
from datasets import load_dataset
import matplotlib.pyplot as plt

ds = load_dataset("juliensimon/solar-system-moons", split="train")
df = ds.to_pandas()

# Moons per planet
print(df["parent_body"].value_counts())

# Galilean moons of Jupiter
galilean = df[df["group"] == "Galilean"]

# Retrograde irregular satellites
retro = df[df["is_retrograde"] == True].sort_values("orbital_period_days")

# Largest moons by radius
biggest = df.dropna(subset=["mean_radius_km"]).nlargest(10, "mean_radius_km")

# Plot moon sizes by planet
fig, ax = plt.subplots(figsize=(10, 6))
for planet in ["Jupiter", "Saturn", "Uranus", "Neptune"]:
    subset = df[(df["parent_body"] == planet) & df["mean_radius_km"].notna()]
    ax.scatter(subset["semi_major_axis_km"] / 1e6, subset["mean_radius_km"],
               label=planet, alpha=0.7, s=40)
ax.set_xlabel("Semi-major axis (million km)")
ax.set_ylabel("Mean radius (km)")
ax.set_title("Moon size vs. orbital distance")
ax.set_xscale("log")
ax.set_yscale("log")
ax.legend()
plt.tight_layout()
plt.show()

# Recent discoveries (2020+)
recent = df[df["discovery_year"] >= 2020]

Data source

https://ssd.jpl.nasa.gov/sats/discovery.html

Related datasets

Citation

bibtex
@dataset{solar_system_moons,
  title = {Solar System Moons},
  author = {Simon, Julien},
  year = {2026},
  url = {https://huggingface.co/datasets/juliensimon/solar-system-moons},
  publisher = {Hugging Face},
  note = {Derived from NASA JPL Solar System Dynamics, https://ssd.jpl.nasa.gov/sats/discovery.html}
}

License

CC-BY-4.0