L'écosystème Python offre une penoplie d'outils puissants pour la data science, le machine learning et l'automatisation. Ce guide technique explore les implémentations pratiques à travers plusieurs domaines clés, en mettant l'accent sur la manipulation de données, le traitement du langage naturel, l'apprentissage automatique et la robotique.
Manipulation et Visualisation de Données
Les bibliothèques fondamentales telles que NumPy, Pandas et Matplotlib permettent de nettoyer, analyser et représenter visuellement des ensembles de données complexes.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Création d'un jeu de données de ventes
ventes_df = pd.DataFrame({
'produit': ['A', 'B', 'C', 'D', 'E'],
'revenu': [1500, 2300, 1800, 3100, 2700],
'unites': [15, 23, 18, 31, 27]
})
# Nettoyage et statistiques descriptives
revenu_moyen = np.mean(ventes_df['revenu'])
ecart_type = np.std(ventes_df['revenu'])
print(f"Moyenne des revenus: {revenu_moyen:.2f}")
print(f"Écart type: {ecart_type:.2f}")
# Visualisation des données
plt.bar(ventes_df['produit'], ventes_df['revenu'], color='skyblue', edgecolor='black')
plt.title('Répartition des Revenus par Produit')
plt.xlabel('Identifiant Produit')
plt.ylabel('Revenu (€)')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
Traitement du Langage Naturel (NLP) et Analyse de Sentiments
L'analyse de texte et l'extraction de sentiments sont facilitées par des bibliothèques spécialisées qui permettent de segmenter, classifier et évaluer la polarité des textes.
from textblob import TextBlob
import jieba
# Analyse de polarité d'un commentaire
commentaire = "Ce nouveau framework est incroyablement rapide et intuitif !"
analyse = TextBlob(commentaire)
polarite = analyse.sentiment.polarity
if polarite > 0.1:
print("Sentiment positif détecté.")
elif polarite < -0.1:
print("Sentiment négatif détecté.")
else:
print("Sentiment neutre.")
# Segmentation lexicale pour le chinois
phrase = "L'intelligence artificielle transforme notre quotidien."
mots_segmentes = jieba.lcut(phrase)
print("Mots extraits:", " / ".join(mots_segmentes))
Apprentissage Automatique et Extraction Web
Scikit-learn fournit des algorithmes robustes pour la classification, tandis que BeautifulSoup permet d'extraire efficacement des données structurées à partir de pages web.
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import requests
from bs4 import BeautifulSoup
# --- Classification par Arbre de Décision ---
dataset = load_iris()
X_features = dataset.data
y_labels = dataset.target
X_train, X_test, y_train, y_test = train_test_split(
X_features, y_labels, test_size=0.3, random_state=42
)
classifieur = DecisionTreeClassifier(max_depth=3, random_state=42)
classifieur.fit(X_train, y_train)
predictions = classifieur.predict(X_test)
print("Rapport de classification:\n", classification_report(y_test, predictions))
# --- Extraction de données Web (Web Scraping) ---
url_cible = "https://example.com"
reponse_http = requests.get(url_cible)
soupe = BeautifulSoup(reponse_http.text, 'html.parser')
titre_page = soupe.title.string if soupe.title else "Titre non trouvé"
print(f"Titre de la page extraite: {titre_page}")
Traitement d'Images et Robotique (ROS)
Python s'étend également à la vision par ordinateru via Pillow et au contrôle de systèmes robotiques via le Robot Operating System (ROS).
from PIL import Image
import rospy
from geometry_msgs.msg import Twist
# --- Redimensionnement d'image ---
img_originale = Image.open("input_image.jpg")
img_redimensionnee = img_originale.resize((800, 600), Image.Resampling.LANCZOS)
img_redimensionnee.save("output_image.jpg")
# --- Publication de commandes de mouvement (ROS) ---
rospy.init_node('controleur_mobile')
editeur_vitesse = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
commande_mouvement = Twist()
commande_mouvement.linear.x = 0.8 # Vitesse linéaire (m/s)
commande_mouvement.angular.z = 0.5 # Vitesse angulaire (rad/s)
editeur_vitesse.publish(commande_mouvement)
rospy.sleep(1)