Comment regrouper des variables en Python à l’aide de numpy.digitize()



Souvent, vous pourriez être intéressé à placer les valeurs d’une variable dans des « bacs » en Python.

Heureusement, cela est facile à faire en utilisant la fonction numpy.digitize() , qui utilise la syntaxe suivante :

numpy.digitize(x, bacs, droite=False)

où:

  • x : tableau à regrouper.
  • bins : tableau de bacs.
  • right : Indique si les intervalles incluent le bord droit ou gauche du bac. Par défaut, l’intervalle n’inclut pas le bord droit.

Ce tutoriel montre plusieurs exemples d’utilisation pratique de cette fonction.

Exemple 1 : placer toutes les valeurs dans deux bacs

Le code suivant montre comment placer les valeurs d’un tableau dans deux bacs :

  • 0 si x < 20
  • 1 si x ≥ 20
import numpy as np

#create data
data = [2, 4, 4, 7, 12, 14, 19, 20, 24, 31, 34]

#place values into bins
np.digitize(data, bins=[20])

array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])

Exemple 2 : placer toutes les valeurs dans trois bacs

Le code suivant montre comment placer les valeurs d’un tableau dans trois bacs :

  • 0 si x < 10
  • 1 si 10 ≤ x < 20
  • 2 si x ≥ 20
import numpy as np

#create data
data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34]

#place values into bins
np.digitize(data, bins=[10, 20])

array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])

Notez que si nous spécifions right= True alors les valeurs seraient placées dans les bacs suivants :

  • 0 si x ≤ 10
  • 1 si 10 < x ≤ 20
  • 2 si x > 20

Chaque intervalle inclurait le bord droit du bac. Voici à quoi cela ressemble :

import numpy as np

#create data
data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34]

#place values into bins
np.digitize(data, bins=[10, 20], right=True)

array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])

Exemple 3 : placer toutes les valeurs dans quatre bacs

Le code suivant montre comment placer les valeurs d’un tableau dans trois bacs :

  • 0 si x < 10
  • 1 si 10 ≤ x < 20
  • 2 si 20 ≤ x < 30
  • 3 si x ≥ 30
import numpy as np

#create data
data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34]

#place values into bins
np.digitize(data, bins=[10, 20, 30])

array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3])

Exemple 4 : compter la fréquence de chaque bac

Une autre fonction NumPy utile qui complète la fonction numpy.digitize() est la fonction numpy.bincount() , qui compte les fréquences de chaque bac.

Le code suivant montre comment placer les valeurs d’un tableau dans trois groupes, puis compter la fréquence de chaque groupe :

import numpy as np

#create data
data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34]

#place values into bins
bin_data = np.digitize(data, bins=[10, 20])

#view binned data
bin_data

array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])

#count frequency of each bin
np.bincount(bin_data)

array([4, 2, 5])

La sortie nous dit que :

  • Le bac « 0 » contient 4 valeurs de données.
  • Le bac « 1 » contient 2 valeurs de données.
  • Le bac « 2 » contient 5 valeurs de données.

Trouvez plus de didacticiels Python ici .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *