Démarreur du projet 3

Copie une recette, colle-la dans Colab, exécute : tu as de vraies données dans un tableau.

Comment l'utiliser

Chaque recette télécharge un vrai jeu de données et le range dans un tableau pandas prêt à analyser. Tu changes ensuite la requête pour la plier à ton sujet.

  1. Choisis le sujet qui t'inspire ci-dessous et clique sur Copier.
  2. Dans Colab, colle dans une cellule (Ctrl+V) et exécute (Maj+Entrée).
  3. .head() affiche les premières lignes : tu vois tout de suite ce que tu as.
  4. Garde une copie locale du tableau pour ne pas dépendre du réseau le jour de la remise : donnees.to_csv("mes-donnees.csv", index=False).

Les recettes (vraies sources)

Toutes lisent un CSV directement, sauf les astéroïdes (JSON) qui montrent le détour json → tableau.

🪐 Exoplanètes - NASA Exoplanet Archive

Colonnes : nom, rayon (pl_rade), masse (pl_bmasse). Pour la relation masse-rayon.

import pandas as pd

url = "https://exoplanetarchive.ipac.caltech.edu/TAP/sync?query=select+top+200+pl_name,pl_rade,pl_bmasse+from+pscomppars+where+pl_rade+is+not+null+and+pl_bmasse+is+not+null&format=csv"
exoplanetes = pd.read_csv(url)
exoplanetes.head()

⭐ Étoiles - ESA Gaia

Colonnes : température, gravité, magnitude, couleur (bp_rp), parallaxe. Pour le diagramme HR.

import pandas as pd

url = "https://gea.esac.esa.int/tap-server/tap/sync?REQUEST=doQuery&LANG=ADQL&FORMAT=csv&QUERY=SELECT+TOP+200+source_id,teff_gspphot,logg_gspphot,phot_g_mean_mag,bp_rp,parallax+FROM+gaiadr3.gaia_source+WHERE+teff_gspphot+IS+NOT+NULL+AND+parallax+%3E+20+AND+phot_g_mean_mag+IS+NOT+NULL"
etoiles = pd.read_csv(url)
etoiles.head()

🌌 Galaxies - SDSS SkyServer

Colonnes : redshift (z), vitesse, distance, catégorie. Pour la loi de Hubble.

import pandas as pd

url = "https://skyserver.sdss.org/dr18/SkyServerWS/SearchTools/SqlSearch?format=csv&cmd=SELECT%20TOP%20300%20specObjID%2Cz%2C%28z%2A299792.458%29%20as%20vitesse_kms%2C%28%28z%2A299792.458%29/70.0%29%20as%20distance_mpc%2CCASE%20WHEN%20z%3C0.05%20THEN%20%27proche%27%20ELSE%20%27lointaine%27%20END%20as%20categorie%20FROM%20SpecObj%20WHERE%20class%3D%27GALAXY%27%20AND%20z%20BETWEEN%200.001%20AND%200.2%20AND%20zWarning%3D0%20ORDER%20BY%20z"
galaxies = pd.read_csv(url, comment="#")
galaxies.head()

comment="#" ignore la ligne d'en-tête technique (#Table1) que SDSS place au début.

📜 Données de Hubble (1929) - VizieR / CDS

Colonnes : distance (Dist), vitesse (Vcmb, HV). Le catalogue original derrière la loi de Hubble.

import pandas as pd

url = "https://tapvizier.cds.unistra.fr/TAPVizieR/tap/sync?REQUEST=doQuery&LANG=ADQL&FORMAT=csv&QUERY=SELECT+TOP+100+Dist%2C+Vcmb%2C+HV+FROM+%22J%2FAJ%2F152%2F50%2Ftable3%22+WHERE+Dist+%3E+5+ORDER+BY+Dist"
hubble = pd.read_csv(url)
hubble.head()

✨ Étoiles brillantes - HYG Database

Un seul CSV, sans API : position, magnitude, distance, couleur de chaque étoile visible.

import pandas as pd

url = "https://raw.githubusercontent.com/astronexus/HYG-Database/main/hyg/CURRENT/hygdata_v41.csv"
etoilesBrillantes = pd.read_csv(url)
etoilesBrillantes.head()

Le plus simple pour commencer : c'est un vrai fichier CSV brut (raw), pas une requête à construire.

🌕 Cratères lunaires - USGS (Robbins 2018)

Colonnes : position et diamètre des cratères de la Lune. Pour une distribution de tailles.

import pandas as pd

url = "https://astrogeology.usgs.gov/ckan/dataset/f89f5478-b69a-486c-b9b5-30d7b0c5ad2b/resource/c4f25cc2-4f8a-4207-a845-5e176da3ac5a/download/lunar_crater_database_robbins_2018"
crateres = pd.read_csv(url)
crateres.head()

Gros fichier (plus d'un million de cratères) : le chargement peut prendre une minute. Pour t'exercer, garde-en moins : crateres = crateres.head(2000).

☄️ Astéroïdes - JPL Small-Body Database

Colonnes : nom, diamètre, période de rotation, classe, géocroiseur. Renvoie du JSON.

import urllib.request
import json
import pandas as pd

url = "https://ssd-api.jpl.nasa.gov/sbdb_query.api?fields=full_name,diameter,rot_per,class,neo&sb-cdata=%7B%22AND%22:%5B%22diameter%7CDF%22,%22rot_per%7CDF%22%5D%7D"

with urllib.request.urlopen(url) as reponse:
    brut = json.loads(reponse.read().decode("utf-8"))

asteroides = pd.DataFrame(brut["data"], columns=brut["fields"])
asteroides.head()

La réponse JSON contient fields (les noms de colonnes) et data (les lignes) : on les assemble en tableau avec pd.DataFrame.

🧩 Ton propre sujet - n'importe quel CSV

Le même patron pour OGSL, Données Québec, Our World in Data... (voir l'aide-mémoire Données réelles).

import pandas as pd

# Remplace l'adresse par celle d'un fichier CSV de ton choix.
url = "https://exemple.com/mon-fichier.csv"
donnees = pd.read_csv(url)
donnees.head()