Introduction
En Python, pour forcer (ou « clipper ») des données à rester dans un intervalle donné ([min, max]), il existe plusieurs méthodes pratiques selon le type de données utilisé (scalaire, liste, tableau NumPy ou objet Series/DataFrame de pandas).
Voici les principales approches
Pour les scalaires (valeurs uniques) :
Utilisez min() et max() :
1 2 3 | x = 12 x_clipped = max(0, min(x, 10)) # Force x à rester dans [0, 10] print(x_clipped) # 10 |
Pour les tableaux NumPy :
Utilisez numpy.clip :
1 2 3 4 5 | import numpy as np data = np.array([-5, 0, 5, 10, 15]) clipped = np.clip(data, 0, 10) # Garde les valeurs dans [0, 10] print(clipped) # [ 0 0 5 10 10] |
Pour les objets pandas Series ou DataFrame :
Utilisez clip() :
1 2 3 4 5 | import pandas as pd df = pd.DataFrame({"value": [-3, 2, 8, 12]}) df["value_clipped"] = df["value"].clip(lower=0, upper=10) print(df) |
Résultat :
1 2 3 4 5 | value value_clipped 0 -3 0 1 2 2 2 8 8 3 12 10 |
Pour les listes Python :
Convertissez la liste en tableau NumPy, ou utilisez une compréhension de liste :
1 2 3 | data = [-3, 2, 8, 12] clipped = [max(0, min(x, 10)) for x in data] print(clipped) # [0, 2, 8, 10] |
Optionnel — Fonction utilitaire personnalisée :
Vous pouvez définir une fonction réutilisable :
1 2 3 4 5 | def clip_value(x, lower, upper): return max(lower, min(x, upper)) # Exemple avec une liste clipped_list = [clip_value(x, 0, 10) for x in [-3, 2, 8, 12]] |
