dataframes

Etape 2: Traitement de données d’observation en astrophysique

Importer les données et librairies utiles

Dans une cellule d’un notebook, copier-coller les lignes suivantes:

import numpy as np
import pandas as pd
# Constantes solaires 
Rsol = 6.9598e8               # rayon solaire en m
rhosol = 1408                 # densite solaire kg/m3
Msol = 1.98855e30             # masses solaire en kg

# Mercure, Jupiter (SI)
V_merc = 47                   # km/s
R_Jup = 71e6                  # m
# Constantes terrestres
MEarth = 5.9736e24             # masses de la terre en kg
REarth = 6.371e6               # rayon de la terre en m
rhoEarth = 5514.               # densité de la terre  kg/m3
  
# Changements d'unité
onemasinrad = np.pi/180./3600000. # 1 mas in radian     
kparsec = 3.08567758e19           # 1 kpc en m
parsec = 3.08567758e16            # 1 pc en m

# Constantes physiques
G = 6.67e-11                   # m3 kg−1 s−2
UA = 149597870700              # m

Planète TOI 270-01

Utilisez le notebook pour placer les valeurs de delta et tau mesurées sur la courbe de transit

Pour la planète TOI 270-01 du système TOI 270, (valeurs à vérifier sur la courbe de transit):

# Données de l'etoile 
R_star = Rsol * 0.37
M_star = Msol * 0.36
# Observables sur la courbe de transit
delta = 0.0044 # sans unité
tau = 4600     # s

Rayon planete a partir de delta

Rp=Rstar×delta

La racine carrée est une fonction de la librairie numpy, avec numpy.sqrt Le résultat du calcul peut nécessiter l’écriture d’un format particulier pour faciliter la lecture:

Utilisez le notebook pour calculer le rayon de la planète observée:

## Calcul du rayon planétaire    
Rp = np.sqrt(delta) * R_star
print("Rp = {:.3e} m.".format(Rp))    
print("Rp = {:5.3f} REarth.".format(Rp/REarth)) 
# ---- affichage console --- #
Rp = 1.708e+07 m.
Rp = 2.681 REarth. 

Vitesse exoplanète Vp

Vp=2×Rstarτ

On peut vérifier que l’on obtient:

# ---- affichage console --- #
Vp = 1.120e+05 m/s.
Vp = 2382.170 V_merc.

Rayon orbite planete

r=G×MstarV2p

Periode revolution

T=2π×rVp

Format numérique:

Une fois que l’on obtient T, en secondes, il peut être utile de représenter cette valeur en jours, heures, min, s:

jours = T//(3600*24)
h = (T-jours*24*3600)//3600
m = (T-jours*24*3600-h*3600)//60
s = T-jours*24*3600-h*3600-m*60
print("{:3.0f} j, {:3.0f} h, {:3.0f} min {:3.2f} s".format(jours,h,m,s))
# ---- affichage console --- #
2 j,  11 h,  22 min 43.12 s

Faire ces mêmes calculs pour chaque planète observable.

Synthèse des résultats: fichier csv

Les fichiers csv sont interopérables: on peut les editer avec un editeur de texte, ou un tableur. On peut les importer facilement pour un traitement en langage python.

Utiliser un tableur

  • Les courbes de transit ont permis de mesurer les valeurs de profondeur de transit δ et de durée de transit τ.
  • Ces valeurs seront reportées dans un fichier csv avec les autres informations sur les planètes et leur étoile. Utiliser un tableur. Attention à bien utiliser des points comme séparateur décimal.
tableau rempli à l'aide d'un tableur

tableau rempli à l'aide d'un tableur

  • Exporter (ou enregistrer) en format csv.

On peut vérifier en ouvrant le fichier csv que les données sont mises dans un format particulier (séparation à l’aide d’un point virgule…)

fichier csv

fichier csv

Import dans le notebook python

  • L’import avec la librairie pandas se fait de la manière suivante: (rien de plus simple)
df = pd.read_csv('exoplanetes.csv',sep=';')
df

Suite

La suite (étape 3) va demander un apprentissage d’une nouvelle structure de données: le dataframe. Cela représente plusieurs avantages:

  • la visualisation des données en table dans un notebook python,
  • la manipulation des données (creation de nouvelles colonnes calculées, projection, selection, …) qui est similaire au travail déjà vu sur les tables (SQL). Le langage diffère, mais l’esprit est le même.
  • L’utilisation des librairies de traitement de données est facilitée (seaborn, …)

retour vers la page de présentation