Etape 6: Analyse graphique
Utiliser le tableau de données des planètes: dataset.csv
Importer les librairies et les datas:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import Cursor
import seaborn as sns
df = pd.read_csv('dataset.csv')
df

liste ordonnée par IST decroissant
Utiliser une librairie de traitement de données python
Seaborn Python est une bibliothèque (un ensemble de modules) de visualisation de données en Python.
Pandas dataframe.corr() est une fonction qui calcule les correlations de paires à partir des séries (valeurs des colonnes) du dataframe.
La méthode de calcul est proposée ici

credit - datatab.net
Principe:
- on commence par créer une matrice de correlation à partir des colonnes de la table (dataframe). Aux intersections ligne/colonne on donne le résultat de la correlation entre les 2 séries (fonction
corr
) - puis on affiche cette matrice, en superposant des couleurs: fonction
heatmap
corr = df.corr()
sns.heatmap(corr,cmap='coolwarm',annot=True,linewidth=0.9)
plt.show()

seaborn - matrice de correlation sur les colonnes du dataset
On voit par exemple que les grandeurs radius
et orbital_period
ne présentent pas de correlation (0.076), le maximum étant 1:
>>> corr['orbital_period']['radius']
0.076
Rechercher des clusters de planètes
On peut aussi utiliser la méthode pandas.plotting
qui donne les nuages de point en miniature:
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
scatter_matrix(df,figsize=(8,8))
plt.show()

Rq: Les diagonales affichent les histogrammes pour les données de la série.
On a vu ici une autre manière de partager la fenêtre en plusieurs graphiques, et mettre les axes en echelle logarithmique:

Placer nos planètes étudiées
Choisir des axes avec des données correlées.
Pour commencer, filter les données pour les planètes à mettre en evidence: la Terre, ainsi que celles de TOI:
names = ['TOI-270 d','TOI-270 b','TOI-270 c','earth']
df_p = df[df['_name'].isin(names)]
df_p

tableau des planetes à repérer dans le graphique
Puis utiliser le script suivant pour superposer 2 nuages de points, dont l’un en couleur:
%matplotlib qt
plt.clf()
axes = plt.gca()
"""nuage de points df issu de la BDD
"""
x = df['radius']
y = df['orbital_period']
z = df['_name']
plt.scatter(x,y,color='silver',marker='.',alpha=0.5)
"""nuage de points df_p issu des observations
"""
x_p = df_p['radius']
y_p = df_p['orbital_period']
z_p = df_p['_name']
plt.scatter(x_p,y_p,color='red',marker='o',label='Rho')
for x, y, z in zip(x_p, y_p, z_p):
axes.text(x, y, f"({z})", fontsize=8)
plt.xscale('log')
plt.yscale('log')
cursor = Cursor(axes, useblit=True, color='red', linewidth=2)
plt.show()

orbital_period vs radius en echelle log
à vous de jouer
Faire un choix d’axes pertinent, afin de trouver des clusters d’exoplanètes et les comparer avec nos planètes d’étude.
Suite
- Analyse, segmentation des données en clusters et previsions avec le module
scikit-learn
: étape 7 - RETOUR AU MENU