🔝 Retour au Sommaire
Félicitations ! Vous avez parcouru un long chemin dans votre apprentissage de Python, et vous êtes maintenant prêt à découvrir l'un des domaines les plus excitants et recherchés de la programmation moderne : la Data Science (science des données).
Dans ce chapitre, nous allons explorer les bibliothèques et techniques fondamentales qui font de Python le langage de choix pour l'analyse de données et la data science.
La Data Science (science des données) est un domaine interdisciplinaire qui utilise des méthodes scientifiques, des processus, des algorithmes et des systèmes pour extraire des connaissances et des insights à partir de données structurées et non structurées.
En termes simples, c'est l'art de transformer des données brutes en informations utiles pour prendre des décisions éclairées.
┌─────────────────────────────────────────┐
│ DATA SCIENCE │
├─────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │Mathéma- │ │Informa- │ │Métier │ │
│ │tiques & │ │tique & │ │Domain │ │
│ │Statis- │ │Program- │ │Expert │ │
│ │tiques │ │mation │ │-ise │ │
│ └──────────┘ └──────────┘ └───────┘ │
│ │
└─────────────────────────────────────────┘
- Mathématiques et Statistiques : Pour modéliser et comprendre les données
- Informatique et Programmation : Pour manipuler et traiter les données
- Expertise métier : Pour poser les bonnes questions et interpréter les résultats
Il est utile de comprendre comment la Data Science se positionne par rapport à d'autres domaines :
- Business Intelligence (BI) : Analyse descriptive du passé (que s'est-il passé ?)
- Data Analytics : Analyse diagnostic et exploratoire (pourquoi est-ce arrivé ?)
- Data Science : Analyse prédictive et prescriptive (que va-t-il se passer ? que devrait-on faire ?)
- Machine Learning : Sous-ensemble de la Data Science axé sur les algorithmes d'apprentissage
- Data Engineering : Construction et maintenance des pipelines de données
Nous vivons dans une époque où les données sont partout :
- 90% des données mondiales ont été créées ces deux dernières années
- Chaque jour, nous générons 2.5 quintillions d'octets de données
- D'ici 2025, on estime que 463 exaoctets de données seront créés chaque jour
La Data Science transforme tous les secteurs :
- Diagnostic médical assisté par IA
- Prédiction d'épidémies
- Médecine personnalisée
- Découverte de médicaments
- Détection de fraudes
- Trading algorithmique
- Évaluation des risques de crédit
- Prédiction des marchés
- Systèmes de recommandation (Netflix, Amazon)
- Optimisation des prix dynamiques
- Prévision de la demande
- Personnalisation de l'expérience client
- Voitures autonomes
- Optimisation des itinéraires
- Prédiction de la maintenance
- Gestion du trafic
- Segmentation client
- Prédiction du churn (désabonnement)
- Optimisation des campagnes
- Analyse des sentiments sur les réseaux sociaux
- Prévision météorologique
- Modélisation du changement climatique
- Optimisation de la consommation énergétique
- Conservation de la biodiversité
La Data Science est l'un des métiers les plus demandés :
- Croissance : +650% d'offres d'emploi entre 2012 et 2022
- Salaires : Parmi les plus élevés du secteur tech
- Variété : Applicable à tous les secteurs
- Avenir : Demande croissante pour les 10 prochaines années
Postes courants :
- Data Scientist
- Data Analyst
- Machine Learning Engineer
- Data Engineer
- Business Intelligence Analyst
- Research Scientist
Un projet de Data Science suit généralement ces étapes :
Question clé : Quel problème essayons-nous de résoudre ?
Exemples :
- Prédire le churn des clients
- Détecter les transactions frauduleuses
- Optimiser les prix des produits
- Segmenter les clients
Question clé : Quelles données avons-nous besoin ?
Sources possibles :
- Bases de données internes
- APIs web
- Fichiers CSV/Excel
- Web scraping
- Capteurs IoT
- Réseaux sociaux
Question clé : Les données sont-elles propres et compréhensibles ?
# Étapes typiques :
- Comprendre la structure des données
- Identifier les valeurs manquantes
- Détecter les outliers (valeurs aberrantes)
- Vérifier la cohérence
- Supprimer les doublonsQuestion clé : Que nous disent les données ?
# Questions à se poser :
- Quelles sont les distributions ?
- Y a-t-il des corrélations ?
- Observe-t-on des patterns ?
- Quelles sont les statistiques clés ?Question clé : Comment transformer les données pour les rendre plus informatives ?
# Techniques :
- Créer de nouvelles variables
- Normaliser/standardiser
- Encoder les variables catégorielles
- Sélectionner les features pertinentesQuestion clé : Quel modèle utiliser ?
# Types de problèmes :
- Régression : prédire une valeur continue
- Classification : prédire une catégorie
- Clustering : regrouper des observations similaires
- Détection d'anomaliesQuestion clé : Le modèle fonctionne-t-il bien ?
# Métriques selon le problème :
- Régression : MAE, RMSE, R²
- Classification : Accuracy, Precision, Recall, F1-score
- Clustering : Silhouette score, InertieQuestion clé : Comment mettre le modèle en production ?
# Considérations :
- API pour servir le modèle
- Monitoring des performances
- Réentraînement périodique
- Documentation┌─────────────────────────────────────────────────────┐
│ CYCLE DE DATA SCIENCE │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────┐
│ Problème │ ──────┐
└─────────────┘ │
▼
┌──────────┐
│ Collecte │
│ Données │
└──────────┘
│
▼
┌──────────┐
│Nettoyage │◄───┐
└──────────┘ │
│ │
▼ │
┌──────────┐ │
│ Explora │ │
│ -tion │ │
└──────────┘ │
│ │
▼ │
┌──────────┐ │
│ Feature │ │
│Engineer │ │
└──────────┘ │
│ │
▼ │
┌──────────┐ │
│Modélisa │ │
│ -tion │ │
└──────────┘ │
│ │
▼ │
┌──────────┐ │
│Évalua- │ │
│tion │────┘
└──────────┘ (si insatisfaisant)
│
▼ (si satisfaisant)
┌──────────┐
│Déploie- │
│ment │
└──────────┘
Python est devenu le langage le plus populaire pour la Data Science pour plusieurs raisons :
# Python est facile à lire et écrire
moyenne = sum(valeurs) / len(valeurs)
# vs C++ équivalent
double moyenne = 0;
for(int i = 0; i < valeurs.size(); i++) {
moyenne += valeurs[i];
}
moyenne /= valeurs.size();Python dispose de bibliothèques pour chaque étape du processus :
# Manipulation de données
import pandas as pd
import numpy as np
# Visualisation
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
# Machine Learning
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Deep Learning
import tensorflow as tf
import torch - Millions d'utilisateurs dans le monde
- Documentation abondante
- Tutorials et cours gratuits
- Forums actifs (Stack Overflow, Reddit, Discord)
- Conférences (PyData, SciPy, etc.)
Python s'intègre facilement avec :
- Bases de données SQL et NoSQL
- APIs REST
- Services cloud (AWS, Azure, GCP)
- Outils Big Data (Spark)
- Tableaux de bord (Dash, Streamlit)
Avec Python, vous pouvez :
- Manipuler des données
- Créer des modèles ML
- Développer des APIs
- Créer des sites web
- Automatiser des tâches
- Déployer en production
| Aspect | Python | R | SQL | Java/Scala |
|---|---|---|---|---|
| Courbe d'apprentissage | Facile | Moyenne | Moyenne | Difficile |
| Manipulation données | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| Statistiques | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Machine Learning | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐ |
| Deep Learning | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐⭐ |
| Production/Deploy | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Big Data | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Polyvalence | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
Python dispose d'un écosystème riche de bibliothèques spécialisées. Voici les plus importantes :
import numpy as np
# Calculs vectorisés ultra-rapides
array = np.array([1, 2, 3, 4, 5])
resultat = array * 2 # [2, 4, 6, 8, 10]
# Algèbre linéaire
matrice = np.array([[1, 2], [3, 4]])
inverse = np.linalg.inv(matrice) Utilisé pour :
- Opérations sur des tableaux multidimensionnels
- Algèbre linéaire
- Génération de nombres aléatoires
- Fonctions mathématiques
import pandas as pd
# DataFrames : comme des tableaux Excel
df = pd.read_csv('donnees.csv')
df_filtre = df[df['age'] > 25]
moyenne = df.groupby('ville')['salaire'].mean() Utilisé pour :
- Charger et exporter des données (CSV, Excel, SQL, etc.)
- Nettoyer et transformer les données
- Analyser et agréger
- Gérer les séries temporelles
import matplotlib.pyplot as plt
# Graphiques simples mais puissants
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Mon graphique')
plt.show() Utilisé pour :
- Graphiques ligne, barre, scatter
- Histogrammes et box plots
- Personnalisation avancée
- Base pour d'autres bibliothèques de viz
import seaborn as sns
# Belles visualisations statistiques
sns.boxplot(data=df, x='categorie', y='valeur')
sns.heatmap(correlation_matrix, annot=True) import plotly.express as px
# Graphiques interactifs
fig = px.scatter(df, x='age', y='salaire', color='ville')
fig.show() from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# Modèles ML en quelques lignes
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test) Algorithmes disponibles :
- Régression (Linear, Ridge, Lasso, etc.)
- Classification (Logistic, SVM, Random Forest, etc.)
- Clustering (K-Means, DBSCAN, etc.)
- Réduction de dimension (PCA, t-SNE)
- Et bien plus...
from scipy import stats, optimize
# Statistiques et optimisation
t_stat, p_value = stats.ttest_ind(group1, group2)import statsmodels.api as sm
# Modèles statistiques avancés
model = sm.OLS(y, X)
results = model.fit()
print(results.summary()) from tensorflow import keras
# Réseaux de neurones
model = keras.Sequential([
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])import torch
import torch.nn as nn
# Alternative à TensorFlow, très populaire en recherche- Jupyter Notebook / JupyterLab : Environnement interactif
- Streamlit / Dash : Applications web pour présenter les résultats
- SQLAlchemy : Connexion aux bases de données
- Beautiful Soup / Scrapy : Web scraping
- NLTK / spaCy : Traitement du langage naturel
┌───────────────────────────────────────────────────────┐
│ ÉCOSYSTÈME PYTHON DATA SCIENCE │
└───────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ NumPy │ │ Pandas │ │ Matplotlib │
│ (Calculs) │ │ (Données) │ │ (Viz Base) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└────────────────┴────────────────┘
│
┌──────────────┴──────────────┐
│ │
┌───────▼────────┐ ┌─────────▼────────┐
│ Seaborn │ │ Plotly │
│(Viz Stat) │ │ (Viz Interact) │
└────────────────┘ └──────────────────┘
┌─────────────┐
│ Scikit-learn│
│ (ML) │
└─────────────┘
│
┌──────┴──────┐
│ │
┌───────▼────┐ ┌─────▼──────┐
│ TensorFlow │ │ PyTorch │
│ (DL) │ │ (DL) │
└────────────┘ └────────────┘
Définition : On a des données avec les réponses (labels), on apprend à prédire.
But : Prédire une valeur continue
# Exemples :
- Prédire le prix d'une maison
- Estimer le chiffre d'affaires futur
- Prévoir la température
- Calculer l'espérance de vieBut : Prédire une catégorie
# Exemples :
- Email spam ou non ?
- Détection de fraude
- Diagnostic médical
- Reconnaissance d'imagesDéfinition : On a des données sans réponses, on cherche des structures.
But : Regrouper des observations similaires
# Exemples :
- Segmentation client
- Regroupement de documents
- Analyse de réseaux sociaux
- Compression d'imagesBut : Simplifier les données tout en gardant l'information
# Exemples :
- Visualisation de données complexes
- Compression de données
- Feature selection
- DébruitageDéfinition : Un agent apprend en interagissant avec un environnement.
# Exemples :
- Jeux (AlphaGo, Chess)
- Robotique
- Véhicules autonomes
- Optimisation de stratégies- Détection d'anomalies : Identifier des observations inhabituelles
- Systèmes de recommandation : Suggérer des produits/contenus
- Traitement du langage naturel : Analyser du texte
- Vision par ordinateur : Analyser des images/vidéos
- Séries temporelles : Prédire des tendances temporelles
Pour réussir en Data Science, vous aurez besoin de compétences dans plusieurs domaines :
Python (principalement)
- Maîtrise du langage
- Bibliothèques spécialisées
- Bonnes pratiques de code
SQL
- Requêtes de base
- Jointures
- Agrégations
Outils
- Git pour le versioning
- Jupyter Notebooks
- IDE (VS Code, PyCharm)
Statistiques
- Statistiques descriptives
- Tests d'hypothèses
- Distributions de probabilité
- Inférence statistique
Algèbre Linéaire
- Matrices et vecteurs
- Opérations matricielles
- Espace vectoriel
Calcul
- Dérivées
- Optimisation
- Gradients
Concepts
- Différents types d'algorithmes
- Overfitting / Underfitting
- Cross-validation
- Feature engineering
Pratique
- Préparation des données
- Entraînement de modèles
- Évaluation
- Tuning des hyperparamètres
Communication
- Présenter des résultats
- Storytelling avec les données
- Vulgarisation
Domaine d'expertise
- Comprendre le business
- Poser les bonnes questions
- Interpréter les résultats
✅ Vous avez déjà parcouru :
- Les bases de Python
- Programmation orientée objet
- Structures de données
- Manipulation de fichiers
📚 À apprendre maintenant :
-
NumPy (1-2 semaines)
- Arrays et opérations vectorisées
- Algèbre linéaire de base
-
Pandas (2-3 semaines)
- DataFrames et Series
- Nettoyage de données
- GroupBy et agrégations
-
Matplotlib (1-2 semaines)
- Graphiques de base
- Personnalisation
📚 À apprendre :
- Statistiques descriptives
- Distributions de probabilité
- Tests statistiques
- Corrélation et régression
📚 À apprendre :
- Concepts fondamentaux
- Scikit-learn
- Algorithmes de base :
- Régression linéaire
- Régression logistique
- Decision Trees
- Random Forest
- K-Means
📚 À explorer :
- Deep Learning (TensorFlow, PyTorch)
- NLP (Traitement du langage)
- Computer Vision
- Big Data (Spark)
- MLOps (déploiement)
Voyons un exemple complet de projet pour illustrer le processus :
Objectif : Prédire le prix d'une maison en fonction de ses caractéristiques
# Fichier CSV avec :
- surface (m²)
- nombre de chambres
- nombre de salles de bain
- âge de la maison
- quartier
- distance au centre-ville
- prix (cible)import pandas as pd
# Charger les données
df = pd.read_csv('maisons.csv')
# Vérifier les valeurs manquantes
print(df.isnull().sum())
# Supprimer ou remplir les NaN
df = df.dropna()
# Vérifier les doublons
df = df.drop_duplicates()import matplotlib.pyplot as plt
# Statistiques descriptives
print(df.describe())
# Distribution des prix
plt.hist(df['prix'], bins=50)
plt.xlabel('Prix')
plt.ylabel('Fréquence')
plt.show()
# Corrélations
print(df.corr(numeric_only=True)['prix'].sort_values(ascending=False))# Créer de nouvelles variables
df['prix_par_m2'] = df['prix'] / df['surface']
df['age_category'] = pd.cut(df['age'], bins=[0, 10, 30, 100])
# Encoder les variables catégorielles
df = pd.get_dummies(df, columns=['quartier'])from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import root_mean_squared_error, r2_score
# Séparer features et target
X = df.drop('prix', axis=1)
y = df['prix']
# Split train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Entraîner le modèle
model = LinearRegression()
model.fit(X_train, y_train)
# Prédictions
y_pred = model.predict(X_test)# Métriques
rmse = root_mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"RMSE: {rmse:,.0f}€")
print(f"R²: {r2:.3f}")
# Visualiser
plt.scatter(y_test, y_pred, alpha=0.5)
plt.xlabel('Prix réel')
plt.ylabel('Prix prédit')
plt.title('Prédiction vs Réalité')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
plt.show() # Variables les plus importantes
importances = pd.DataFrame({
'feature': X.columns,
'coefficient': model.coef_
}).sort_values('coefficient', ascending=False)
print("Variables les plus influentes:")
print(importances.head(10)) - "Python for Data Analysis" - Wes McKinney (créateur de Pandas)
- "Hands-On Machine Learning" - Aurélien Géron
- "Introduction to Statistical Learning" - James, Witten, Hastie, Tibshirani
- "Deep Learning" - Ian Goodfellow
- Kaggle Learn : Cours courts et pratiques (gratuit)
- Coursera : Spécialisations en Data Science
- DataCamp : Exercices interactifs
- Fast.ai : Deep Learning pratique (gratuit)
- Kaggle : Compétitions et datasets
- Google Colab : Notebooks gratuits avec GPU
- GitHub : Explorer des projets open-source
- r/datascience (Reddit)
- Kaggle Forums
- Stack Overflow
- Twitter (#DataScience, #Python)
- PyData (mondiale)
- SciPy (scientifique)
- PyCon (Python général)
📊 Théorie : 20%
💻 Pratique : 80%
La Data Science s'apprend par la pratique. Faites des projets !
❌ Ne pas commencer par :
- Système de recommandation ultra-complexe
- Réseau de neurones profond
- Prédiction de la bourse
✅ Commencez par :
- Analyse de dataset simple (Titanic, Iris)
- Régression linéaire
- Classification basique
- Visualisations
Sites pour trouver des données :
- Kaggle Datasets
- UCI Machine Learning Repository
- Data.gov
- Google Dataset Search
- Open Data de votre ville
- Créez un portfolio GitHub
- Écrivez des notebooks Jupyter clairs
- Expliquez vos choix et résultats
- Partagez sur LinkedIn/Twitter
- Participez à des compétitions Kaggle
- Contribuez à des projets open-source
- Rejoignez des meetups locaux
- Posez des questions sur Stack Overflow
- Suivez des blogs (Towards Data Science, Analytics Vidhya)
- Regardez des conférences (PyData talks sur YouTube)
- Lisez des papers (arXiv.org)
- Essayez de nouvelles techniques
Avant de vous lancer dans le Deep Learning :
- ✅ Maîtrisez NumPy et Pandas
- ✅ Comprenez les statistiques de base
- ✅ Pratiquez le feature engineering
- ✅ Essayez différents algorithmes classiques
Ce chapitre est organisé en trois sections principales qui couvrent les fondations de la Data Science en Python :
Vous apprendrez :
- Les arrays NumPy et opérations vectorisées
- Indexation et slicing avancés
- Algèbre linéaire de base
- Fonctions mathématiques et statistiques
Pourquoi NumPy ? C'est la fondation de tout l'écosystème. Pandas, Matplotlib, Scikit-learn sont tous construits sur NumPy.
Vous découvrirez :
- DataFrames et Series
- Nettoyage et transformation de données
- GroupBy et agrégations
- Fusion et jointure de données
Pourquoi Pandas ? 80% du temps d'un data scientist est consacré à la manipulation de données. Pandas rend cela efficace et agréable.
Vous maîtriserez :
- Matplotlib pour les graphiques de base
- Visualisations statistiques avancées
- Créer des visualisations percutantes
Pourquoi la visualisation ? "Un graphique vaut mille mots". C'est essentiel pour explorer les données et communiquer les résultats.
La Data Science est un domaine passionnant qui combine créativité, logique et impact réel. Python et son écosystème riche font de ce voyage d'apprentissage à la fois accessible et puissant.
Ce que vous allez gagner en maîtrisant ces compétences :
✅ Capacité d'analyse : Transformer des données brutes en insights actionnables
✅ Automatisation : Créer des pipelines de traitement répétables et fiables
✅ Impact business : Prendre des décisions basées sur les données
✅ Compétences recherchées : Ouvrir des portes vers des carrières passionnantes
✅ Polyvalence : Appliquer ces compétences dans n'importe quel domaine
Le voyage commence maintenant !
Vous avez déjà acquis de solides bases en Python. Maintenant, vous allez découvrir comment utiliser ce langage pour analyser, comprendre et tirer des insights de données. Chaque section de ce chapitre construira sur la précédente pour vous donner une base solide en Data Science.
Prêt à plonger dans le monde des données ? Commençons par NumPy, la bibliothèque fondamentale du calcul numérique en Python !
"In God we trust. All others must bring data." - W. Edwards Deming
"Data is the new oil." - Clive Humby
"Without data, you're just another person with an opinion." - W. Edwards Deming