Comment Forcer les Données à Rester dans un Intervalle Spécifique en Python ?

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]]

Références

Liens Site
https://docs.python.org/3/library/functions.html#min Documentation officielle Python — fonction min()
https://docs.python.org/3/library/functions.html#max Documentation officielle Python — fonction max()
https://numpy.org/doc/stable/reference/generated/numpy.clip.html Documentation officielle NumPy — numpy.clip()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.clip.html Documentation officielle pandas — Series.clip()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.clip.html Documentation officielle pandas — DataFrame.clip()
https://realpython.com/numpy-scipy-pandas-correlation-python/ Real Python — Travailler avec des données numériques (NumPy/pandas)
https://www.w3schools.com/python/ref_func_min.asp W3Schools — Référence min() en Python
https://www.w3schools.com/python/ref_func_max.asp W3Schools — Référence max() en Python
https://numpy.org/doc/stable/reference/routines.math.html Documentation officielle NumPy — Fonctions mathématiques
https://pandas.pydata.org/docs/user_guide/computation.html Documentation officielle pandas — Guide des calculs et opérations