Résumer les résultats dans un rapport
Rassemblez les principaux enseignements dans un résumé markdown structuré, avec des références intégrées aux visualisations et des prochaines étapes concrètes.
Résumer les résultats dans un rapport est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Pourquoi un rapport EDA structuré est important
Les notebooks Jupyter bruts contenant des centaines de graphiques et de cellules de code sont difficiles à partager avec les parties prenantes qui doivent agir sur la base des résultats. Un rapport récapitulatif d’EDA synthétise les informations les plus importantes de toutes vos analyses univariées et bivariées sous la forme d’un exposé clair. Les bons rapports distinguent les résultats (ce que montrent les données) des implications (ce qu’il faut faire) et n’incluent des visualisations justificatives que pour les affirmations clés.
Les six sections d’un rapport EDA
Un rapport EDA professionnel contient généralement six sections : 1) Vue d’ensemble du jeu de données (forme, source, période), 2) Problèmes de qualité des données (valeurs manquantes, valeurs aberrantes, doublons et traitement appliqué), 3) Distribution des variables clés (colonnes numériques et catégorielles les plus importantes), 4) Corrélations et associations (relations présentant les amplitudes les plus élevées), 5) Informations sur les sous-groupes (différences entre groupes importantes pour la question métier) et 6) Prochaines étapes recommandées (actions de nettoyage, suggestions de modélisation).
Rédiger la section consacrée à la vue d’ensemble du jeu de données
La section de vue d’ensemble doit être générée par programme afin de garantir son exactitude à tout moment. Relevez la forme, les noms de colonnes et les types de données, la période couverte (le cas échéant), ainsi que la source ou la version du jeu de données. Rédiger cette section dans le code plutôt qu’en prose évite l’erreur courante qui consiste à décrire dans un rapport un jeu de données de 10 000 lignes alors que celui-ci a en réalité été généré à partir d’une version nettoyée de 9 800 lignes.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print('=== DATASET OVERVIEW ===')
print(f'Shape: {df.shape[0]:,} rows x {df.shape[1]} columns')
print(f'Columns: {", ".join(df.columns)}')
print(f'Numeric: {df.select_dtypes("number").shape[1]} columns')
print(f'Categorical: {df.select_dtypes("object").shape[1]} columns')
print(f'Boolean: {df.select_dtypes("bool").shape[1]} columns')
print(f'Total missing cells: {df.isna().sum().sum():,}')
print(f'Duplicate rows: {df.duplicated().sum()}')Rédiger la section consacrée à la qualité des données
La section consacrée à la qualité des données répertorie chaque problème détecté ainsi que la décision prise pour chacun d’eux. Utilisez un tableau comportant les colonnes suivantes : Colonne, Problème, Gravité (élevée/moyenne/faible), Action effectuée. Calculez ce tableau par programme à partir des résultats du profilage afin qu’il soit automatiquement mis à jour lorsque les données changent. La gravité doit refléter l’impact métier : une variable cible manquante est un problème de gravité élevée, tandis qu’une colonne manquante qui n’est pas prédictive peut être de faible gravité.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
# Auto-generate data quality table
missing_pct = (df.isna().sum() / len(df) * 100).round(1)
quality = missing_pct[missing_pct > 0].to_frame(name='missing_pct')
quality['severity'] = quality['missing_pct'].apply(
lambda x: 'High' if x > 30 else ('Medium' if x > 10 else 'Low')
)
quality['action'] = quality['missing_pct'].apply(
lambda x: 'Drop column' if x > 50 else 'Impute or flag'
)
print(quality.to_string())Générer des figures récapitulatives à plusieurs panneaux
Une figure récapitulative combine plusieurs graphiques dans une seule image qui peut être intégrée à un rapport. Utilisez plt.subplots(rows, cols) pour créer une grille et attribuez à chaque résultat clé son propre panneau. Enregistrez la figure avec savefig() en utilisant une résolution DPI adaptée au format de sortie (150 pour un affichage à l’écran, 300 pour une impression). Donnez à chaque panneau un titre formulé comme un résultat clair, par exemple « Le tarif est fortement asymétrique à droite (asymétrie=4,1) », plutôt que le simple nom de la colonne.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 1. Fare distribution
sns.histplot(df['fare'], kde=True, bins=30, ax=axes[0][0])
axes[0][0].set_title('Fare is right-skewed (skew=4.1)')
# 2. Survival by class
survival = df.groupby('class')['survived'].mean().reset_index()
sns.barplot(data=survival, x='class',
y='survived', order=['First', 'Second', 'Third'], ax=axes[0][1])
axes[0][1].set_title('Survival Rate Drops by Class')
# 3. Age distribution
sns.histplot(df['age'].dropna(), kde=True, bins=25, ax=axes[1][0], color='coral')
axes[1][0].set_title('Age: Near-Normal, Missing 20%')
# 4. Embarkation counts
sns.countplot(data=df, x='embarked', ax=axes[1][1], palette='Set2')
axes[1][1].set_title('Most Boarded at Southampton')
plt.tight_layout()
plt.savefig('/tmp/eda_summary.png', dpi=150, bbox_inches='tight')
plt.show()
print('Saved: /tmp/eda_summary.png')Rédiger les résultats sous forme de texte narratif
Chaque résultat clé doit être formulé comme une phrase pertinente pour l’activité, et non comme une description technique. Au lieu d’écrire « La colonne tarif présente une asymétrie=4,1 », écrivez « Les prix des billets sont extrêmement asymétriques à droite : un petit nombre de passagers de première classe ont payé plus de 10 fois le tarif médian, ce qui peut fausser les analyses de revenus qui utilisent le prix moyen. » Cette traduction d’une observation statistique en implication métier est ce qui donne toute sa valeur aux rapports EDA pour les parties prenantes non techniques.
Générer des rapports Markdown par programme
Vous pouvez rédiger des rapports EDA sous forme de fichiers Markdown directement depuis Python. Créez une chaîne contenant des titres Markdown, des listes à puces et des liens vers des images intégrées, puis écrivez-la dans un fichier .md. Cette approche produit des rapports reproductibles qui se mettent automatiquement à jour lorsque les données sous-jacentes changent, ce qui les rend adaptés à l’intégration dans les artefacts de sortie d’un pipeline de données ou dans des dépôts Git.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
# Build a simple markdown report
lines = [
'# EDA Summary Report: Titanic Dataset',
'',
'## Overview',
f'- **Rows:** {len(df):,}',
f'- **Columns:** {df.shape[1]}',
f'- **Total Missing Cells:** {df.isna().sum().sum():,}',
'',
'## Key Findings',
'- First-class passengers had a 63% survival rate vs 24% for third class.',
'- Fare is extremely right-skewed (skew=4.1); use log transform before modelling.',
'- Age is missing in 20% of rows — median imputation recommended.',
'',
'## Recommended Next Steps',
'1. Impute age with median grouped by class.',
'2. Drop the cabin column (77% missing).',
'3. Log-transform fare before any regression modelling.',
]
with open('/tmp/eda_report.md', 'w') as f:
f.write('\n'.join(lines))
print('Report written to /tmp/eda_report.md')
print('\n'.join(lines[:10]))Exporter en HTML avec Jupyter
Les notebooks Jupyter peuvent être exportés en HTML ou en PDF à l’aide de jupyter nbconvert --to html notebook.ipynb. Cela conserve tous les graphiques, le code et les cellules Markdown dans un seul fichier partageable, dont la consultation ne nécessite aucune installation de Python. Pour un pipeline entièrement automatisé, exécutez le notebook par programme avec papermill : papermill input.ipynb output.ipynb -p date '2024-01-01', ce qui paramètre et exécute le notebook comme un script.
# To export a Jupyter notebook to HTML:
# jupyter nbconvert --to html eda_notebook.ipynb
# To parameterise and run with papermill:
# pip install papermill
# papermill eda_template.ipynb eda_2024.ipynb -p date '2024-01-01' -p min_rows 1000
# The output notebook can then be exported:
# jupyter nbconvert --to html eda_2024.ipynb
print('Jupyter nbconvert and papermill automate report generation.')Structurer les prochaines étapes exploitables
La section prochaines étapes recommandées est souvent la plus consultée d’un rapport EDA. Structurez-la sous forme de liste de contrôle priorisée : P1 (bloquant) — problèmes qui doivent être corrigés avant que toute analyse soit valide (par exemple, des types de données mal identifiés), P2 (important) — actions de nettoyage qui influent considérablement sur les performances du modèle (par exemple, le traitement des valeurs aberrantes), P3 (souhaitable) — idées d’enrichissement et sources de données supplémentaires à explorer. Cette présentation aide l’équipe à affecter les efforts de manière appropriée.
Utiliser pandas-profiling pour produire rapidement des rapports
ydata-profiling (pip install ydata-profiling) génère un rapport HTML complet en un seul appel. Le rapport inclut des statistiques générales, les distributions des variables, les corrélations, les schémas de valeurs manquantes et la détection des doublons — toutes les sections d’un rapport EDA manuel. Utilisez-le pour une exploration rapide au début d’un projet, puis rédigez un rapport récapitulatif personnalisé mettant en évidence les résultats les plus pertinents pour votre question métier.
# pip install ydata-profiling
# from ydata_profiling import ProfileReport
# import seaborn as sns
# df = sns.load_dataset('titanic')
# profile = ProfileReport(df, title='Titanic EDA')
# profile.to_file('titanic_eda.html') # interactive HTML
# profile.to_notebook_iframe() # inline in Jupyter
# Key sections in the generated report:
# - Overview: shape, missing, duplicates
# - Variables: per-column statistics and plots
# - Correlations: Pearson, Spearman, Cramers V
# - Missing values: heatmap and dendrogram
# - Duplicates: full list of duplicate rows
print('ydata-profiling generates full EDA reports with one function call.')Anti-modèles de rapports EDA à éviter
Parmi les anti-modèles courants des rapports EDA : afficher chaque graphique pour chaque colonne (cela produit des rapports de 50 pages que personne ne lit — sélectionnez les 5 à 10 éléments les plus importants), énoncer des faits sans les interpréter (« l’âge comporte 177 valeurs nulles » — mais que faut-il en faire ?), ne pas actualiser le rapport après le nettoyage (nettoyez les données, puis recommencez le profilage pour confirmer que les problèmes ont été résolus) et mélanger le code de nettoyage et l’analyse (séparez le nettoyage des données du récit de l’EDA).
Vérification rapide
Testez votre compréhension de la rédaction de rapports EDA présentée dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris à structurer les rapports EDA en six sections (vue d’ensemble, qualité, distributions, corrélations, informations sur les sous-groupes, prochaines étapes), à générer par programme des figures récapitulatives à plusieurs panneaux et des rapports Markdown, et à traduire les résultats statistiques en un langage pertinent pour l’activité. Nous allons maintenant explorer des techniques avancées d’indexation — la création de MultiIndex et la sélection hiérarchique dans Pandas.
Questions Fréquemment Posées
La leçon « Résumer les résultats dans un rapport » est-elle gratuite ?
Oui — le texte complet de « Résumer les résultats dans un rapport » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Résumer les résultats dans un rapport » ?
Rassemblez les principaux enseignements dans un résumé markdown structuré, avec des références intégrées aux visualisations et des prochaines étapes concrètes. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?
Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Résumer les résultats dans un rapport » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?
Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Liste de contrôle pour le profilage d’un jeu de données
- Analyse univariée
- Analyse bivariée et analyse des corrélations
- Résumer les résultats dans un rapport