Les pandas convertissent les valeurs catégorielles en valeurs Int

Les Pandas Convertissent Les Valeurs Categorielles En Valeurs Int



Les ensembles de données pour l'exécution de l'apprentissage automatique comprennent à la fois des variables numériques et catégorielles. Les variables catégorielles sont des données de type chaîne que les humains comprennent facilement. Les machines, en revanche, ne peuvent pas comprendre directement les entrées catégorielles. Par conséquent, le contenu catégoriel doit être transformé en valeurs numériques que les machines peuvent interpréter.

Méthodes de conversion de catégorique en entier

Les techniques disponibles dans 'pandas' pour convertir les valeurs catégorielles en int d'un DataFrame sont fournies ici :

    • Méthode DataFrame.replace()
    • Méthode DataFrame.apply(factoriser())

Nous utiliserons ces méthodes dans cet article et expliquerons en détail comment utiliser les deux méthodes dans les 'pandas'.







Exemple # 1 : Utilisation de la méthode Pandas Replace()

Les valeurs catégorielles dans un DataFrame peuvent être converties en int en utilisant la méthode pandas 'DataFrame.replace()'. Nous allons apprendre ici à utiliser cette méthode.



Nous avons utilisé l'outil 'Spyder' pour exécuter de manière optimale cette technique en Python. Pour commencer à écrire le script, ouvrez un nouveau fichier Python dans l'outil 'Spyder'. L'exigence la plus importante pour écrire le script est d'importer les bibliothèques appropriées. Puisque nous devons implémenter une méthode 'pandas', nous aurons le 'import pandas as pd' pour accéder aux fonctionnalités de 'pandas'. Ensuite, nous commençons notre code Python de base. Nous avons créé un DataFrame en utilisant la méthode 'pd.DataFrame()'. Le DataFrame est initialisé par trois colonnes « Name », « Degree » et « Income ». Toutes les colonnes du DataFrame stockent la même longueur de valeurs.



La première colonne, 'Nom', a huit valeurs qui sont 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' et 'elsa'. La deuxième colonne, 'Degree', stocke également huit valeurs catégorielles, qui sont 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' et 'MS'. La dernière colonne 'Revenu' a huit valeurs entières '60000', '80000', '75000', '45000', '56000', '65000', '55000' et '70000'. Nous avons créé un objet DataFrame 'staff' pour stocker la sortie de l'appel de la fonction 'pd.DataFrame()'. Pour afficher notre DataFrame initial, nous avons utilisé la méthode 'print ()' avec le nom 'staff' de DataFrame comme paramètre dans la dernière ligne du script.






Pour afficher la sortie sur le terminal, utilisez le bouton 'Exécuter le fichier' de l'outil 'Spyder' ou appuyez sur les touches 'Maj + Entrée'. La sortie affichée sur le terminal montre un DataFrame avec trois colonnes qui ont été générées avec succès.


Maintenant, notre DataFrame est construit, nous devons lui appliquer la technique requise. La méthode pandas 'DataFrame.replace()' sera utilisée pour convertir les valeurs catégorielles d'une colonne spécifiée en valeurs entières afin que les machines puissent les rendre lisibles.



Nous avons fourni le nom du DataFrame avec le nom de colonne particulier dont nous devons remplacer les valeurs, qui est 'staff[‘degree’]'. Nous voulons que les valeurs de la colonne 'Degree', qui a des valeurs catégorielles, soient remplacées par des valeurs entières. Ensuite, la méthode « .replace() » est invoquée. Nous l'avons passé en deux ensembles; le premier contient les deux valeurs catégorielles '['BS', 'MS']' que nous avons extraites de la colonne 'Diplôme'. Comme vous pouvez le voir, la colonne 'Degree' utilise ces deux valeurs à plusieurs reprises. Si nous avions une troisième valeur, nous devions également la mentionner. Le deuxième ensemble a deux valeurs int '[0, 1]', qui remplaceront respectivement les premières valeurs définies. L'autre paramètre, 'inplace', est défini sur 'True', permettant le remplacement des valeurs. S'il est défini sur 'False', il désactivera le remplacement. Enfin, nous avons utilisé la méthode 'print()' pour afficher le DataFrame 'staff' mis à jour.


Le DataFrame résultant a des valeurs entières dans la colonne 'Degree'. La valeur « BS » est remplacée par « 0s », et le « MS » est remplacé par les « 1s ».


Vous pouvez même vérifier le type de données pour chaque colonne en utilisant la propriété 'dataframe.dtype'. Cela nous donnera les types de données de toutes les colonnes du DataFrame spécifié.


Ici, nous avons les types de données de notre DataFrame. Nous pouvons voir que le type de données de la colonne 'Degré' est changé en 'int64'.

Exemple # 2 : Utilisation de la méthode Pandas apply()

L'autre méthode que pandas nous a fournie est la fonction 'DataFrame.apply()' pour convertir les valeurs catégorielles en nombres entiers. Dans l'exemple précédent, nous avons appris à convertir une colonne catégorielle en entier. Nous allons maintenant voir comment convertir toutes les colonnes catégorielles du DataFrame en int.

En commençant par la mise en œuvre pratique, nous devons importer la bibliothèque essentielle pour cette méthode, qui est pandas. Nous avons utilisé le script 'import pandas as pd' pour importer des pandas dans notre fichier Python dans l'outil 'Spyder', ce qui nous permettra d'accéder aux modules pandas en utilisant le 'pd'. Nous avons utilisé la fonction 'pd.DataFrame()' pour construire un DataFrame.

Ce DataFrame a quatre colonnes 'groupe', 'position', 'scores' et 'aides'. Chaque colonne stocke 9 valeurs. Les valeurs de la colonne « groupe » sont « X », « X », « Y », « X », « Y », « Y », « Y », « X » et « Y ». La colonne 'position' a 9 valeurs qui sont 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' et 'B'. La colonne 'scores' contient des valeurs entières telles que '4', '8', '7', '10', '9', '5', '7', '3' et '23'. La dernière colonne, « aides », a les valeurs « 10 », « 2 », « 3 », « 9 », « 3 », « 7 », « 4 », « 2 » et « 9 ».

Nous avons créé un objet DataFrame 'prog' et lui avons attribué la sortie de l'appel de la méthode 'pd.DataFrame()'. Ainsi, la trame DataFrame résultante générée à partir de 'pd.DataFrame()' sera stockée dans 'prog'. Maintenant, nous pouvons accéder au DataFrame en utilisant cet objet. Pour afficher ce DataFrame, nous avons utilisé la méthode 'print ()' avec l'objet DataFrame 'prog' comme paramètre.


Lorsque le programme Python précédent est exécuté, un DataFrame à quatre colonnes sera affiché sur le terminal.


Pour convertir plusieurs colonnes catégorielles en nombres entiers, nous avons suivi cette technique. Nous devons d'abord sélectionner toutes les colonnes contenant le type de données d'objet en utilisant la méthode pandas 'DataFrame.select_dtypes().columns'. Lorsque nous l'utilisons dans notre script selon les besoins, ce sera 'prog.select_dtypes(['object']).columns'. Il sélectionnera toutes les colonnes ayant le type de données 'object' dans le DataFrame 'prog'. Nous avons créé une variable 'concate_col' pour stocker la sortie de cette méthode. Nous pouvons maintenant accéder aux colonnes de type de données 'object' simplement en utilisant cette variable 'concat_col'.

Maintenant, pour convertir ces colonnes en entiers, nous avons utilisé les pandas 'DataFrame.apply()' avec la méthode 'pd.factorize()'. Nous avons utilisé la variable 'concat_col' avec le nom DataFrame puis la méthode '.apply()' est invoquée. Entre les parenthèses de la méthode '.apply', nous avons appelé la méthode 'pd.factorize()' où 'x' peut être n'importe quelle valeur du DataFrame 'prog' avec le type de données 'object'. Ainsi, toute cette ligne de code s'écrit 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. La méthode de factorisation prendra une valeur avec un type de données 'object' et convertissez-le en 'int'. La sortie finale peut être affichée en appelant la fonction 'print()' en passant la variable 'prog' comme paramètre.


Dans le DataFrame mis à jour, nous pouvons observer que les valeurs des colonnes 'group' et 'position' étaient initialement catégorielles, c'est-à-dire object. Toujours dans le DataFrame de sortie mis à jour, les deux colonnes ont des valeurs entières. Dans la colonne « groupe », « X » est remplacé par « 0 » et « Y » par « 1 ». Alors que la colonne « position » « A » est remplacée par « 0 », « C » par « 1 », « D » par « 2 » et « B » par « 3 ».


Maintenant, vérifions les types de données mis à jour.


Toutes les colonnes suivantes ont le type de données 'int64'.

Conclusion

Notre guide s'articule autour de la conversion de valeurs catégorielles en valeurs numériques afin qu'elles puissent être rendues compréhensibles par les machines car le type de données de l'objet ne peut pas être traité par elles. Nous vous avons présenté les deux approches proposées par la bibliothèque 'pandas' pour obtenir le type de données requis. De plus, avec la mise en œuvre pratique d'exemples de codes exécutés sur l'outil 'Spyder', nous avons partagé le résultat de chaque exemple. Enfin, nous avons expliqué chaque étape pour atteindre le résultat souhaité.