Comment nettoyer des données capteurs bruitées sans être docteur en statistiques

Le Problème : « Garbage In, Garbage Out »

En ingénierie, une analyse n’est jamais meilleure que la qualité des données entrantes. Un capteur qui « décroche » pendant une fraction de secondes peut générer un pic de pression aberrant à 10 000 bars, faussant totalement vos moyennes et vos calculs de fatigue. 

Le calvaire Excel : Faire défiler des milliers de lignes pour repérer les anomalies ou utiliser des filtres qui cachent les données sans vraiment les traiter pour les calculs suivants. 

image montrant le passage de données bruitées vers des données lissées, nettoyées grâce à Python

La Solution : Le Nettoyage Vectorisé

Plutôt que de traiter les cellules une par une, Python traite la colonne entière comme un signal physique.
Nous allons voir comment éliminer le « bruit » et les erreurs de mesure instantanément. 

Le Code Concret : Le « Sanity Check » Automatique

Dans l’article précédent, nous avons vu comment automatiser l’importation de fichiers CSV. Maintenant que nous avons notre base de travail, attaquons nous à la précision du signal.
Voici comment transformer un fichier brut et inexploitable en une base de données saine pour vos calculs de structure ou de thermique. 

1. Supprimer les lignes vides ou erreurs de lecture (NaN) 

Sous Excel, cela demande un filtre manuel. Ici, c'est une commande. 

df_clean = df_final.dropna(subset=['pression', 'temperature']) 

2. Éliminer les valeurs aberrantes (Outliers) 

Exemple : On sait que la pression ne peut physiquement pas dépasser 200 bars. 

On ne garde donc que les valeurs de pressions inférieures à 200 bars. 

df_clean = df_clean[df_clean['pression'] <= 200] 

3. Lissage du signal (Rolling Average) 

Pour éliminer le bruit du capteur et voir la tendance réelle on lisse le signal grâce à une moyenne flottante sur 10 points de mesure par exemple. 

df_clean['pression_lisse'] = df_clean['pression'].rolling(window=10).mean() 

print(f"Données initiales : {len(df_final)} lignes") 
print(f"Données nettoyées : {len(df_clean)} lignes") 

Pourquoi c’est une révolution pour votre précision ?

L’obstacle La méthode « Manuelle » La méthode « De Facto » 
Valeurs manquantes On laisse des zéros qui faussent les moyennes. dropna() les supprime proprement du calcul. 
Pics aberrants Difficiles à repérer sur un graphique dense. Un filtre logique les élimine en une milliseconde. 
Bruit de mesure Courbe « en dents de scie » illisible. Lissage mathématique (moyenne glissante) instantané. 
Traçabilité On modifie le fichier source (dangereux). Le fichier source reste intact, le nettoyage est scripté. 

Le Conseil « De Facto »

Ne supprimez jamais vos données brutes. L’avantage de Python est que votre script crée une « copie propre » (df_clean) tout en gardant l’original intact. Si vous réalisez plus tard que votre seuil de 200 bars était trop bas, il suffit de changer un chiffre dans le code et de relancer le script. C’est la reproductibilité

Exemple concret

Ce graphique interactif a été réalisé avec Plotly, permettant une exploration dynamique des signaux capteurs.

👉 Cliquez ici pour apprendre à manipuler ce graphique
  • Zoom : Cliquez et glissez sur une zone du signal.
  • Détails : Survolez les points pour voir la pression exacte.
  • Filtre : Cliquez sur la légende pour masquer une courbe.
  • Reset : Double-cliquez pour revenir à la vue globale.

Conclusion : 

Maintenant que nous avons éliminé le bruit parasite, nous pouvons enfin faire parler la physique. Pas besoin d’étirer des formules Excel sur des milliers de lignes.

Dans l’article suivant nous aborderons la notion de calcul vectorisé à travers un cas concret.

➡️ Lire l’article : Calculez à la vitesse de l’éclair. De la donnée propre à la puissance physique.

Laisser un commentaire