Introduction à Pandas.Dropna ()

La bibliothèque open source de Python, Pandas, est sans aucun doute la bibliothèque la plus utilisée pour la science et l'analyse des données. C'est également un package préférable pour les opérations de manipulation de données ad hoc. Le mérite revient à sa représentation extrêmement flexible des données à l'aide de DataFrames et à l'arsenal de fonctions exposées à la manipulation des données présentes dans ces Data Frames. Tout problème de données réel entraînera le problème de données manquantes et il est impératif que ces points de données soient pris en charge de la bonne manière. La gestion des données manquantes de toute manière appropriée est prise en charge par cette fonction, Pandas.Dropna () .

Que sont exactement Pandas.Dropna ()?

La page Pydata peut être référée pour la définition officielle de la fonction.

L'en-tête de fonction affiché est le suivant (avec les valeurs de paramètre par défaut):

DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

Les paramètres (à l'exclusion de self (l'objet de bloc de données lui-même)) affichés dans la définition de la fonction sont les suivants:

  • axe: il fait référence à l'orientation (ligne ou colonne) dans laquelle les données sont déposées. Les valeurs possibles sont 0 ou 1 (également «index» ou «colonnes» respectivement). 0 / 'index' représente la suppression des lignes et 1 / 'colonnes' représente la suppression des colonnes.
  • comment: spécifie le scénario dans lequel la colonne / ligne contenant une valeur nulle doit être supprimée. Les valeurs sont 'any' ou 'all'. 'all' supprime la ligne / colonne uniquement si toutes les valeurs de la ligne / colonne sont nulles. 'any' supprime la ligne / colonne lorsqu'au moins une valeur de la ligne / colonne est nulle.
  • Thresh: spécifie le nombre minimum de valeurs non NA dans la ligne / colonne pour qu'il soit pris en compte dans le résultat final. Toute ligne / colonne avec le nombre de valeurs non NA <valeur de seuil est supprimée quels que soient les autres paramètres transmis. Lorsque thresh = none, ce filtre est ignoré.
  • sous-ensemble: axe spécifie si les lignes / colonnes doivent être supprimées. le sous-ensemble prend une liste de colonnes / lignes respectivement (à l'opposé de l'axe) qui doivent être recherchées pour des valeurs nulles / NA au lieu d'une liste entière de colonnes / lignes respectivement.
  • inplace: En tant que bonne pratique, le DataFrame d'origine (ou la représentation des données) n'est pas modifié, mais une copie séparée avec les modifications (c'est-à-dire les lignes / colonnes supprimées) est renvoyée. L'attribut inplace vous donne la flexibilité de modifier la structure de données d'origine elle-même.

Maintenant que nous avons une idée générale des paramètres exposés par dropna (), voyons quelques scénarios possibles de données manquantes et comment nous les abordons.

Exemples d'utilisation de Pandas.Dropna ()

Voici les exemples de pandas.dropna ():

Importer des pandas: Pour utiliser Dropna (), il doit y avoir un DataFrame. Pour créer un DataFrame, la bibliothèque du panda doit être importée (pas de surprise ici). Nous allons l'importer avec un alias pd pour référencer facilement les objets sous le module. Pour définir des valeurs nulles, nous nous en tiendrons à numpy.nan. Nous allons donc importer la bibliothèque numpy avec un alias np:

Code:

In (1): import pandas as pd
In (2): import numpy as np

1. Créez un objet DataFrame pour la manipulation

Lors de l'importation de pandas, toutes les méthodes, fonctions et constructeurs sont disponibles dans votre espace de travail. Créons donc un DataFrame qui peut nous aider à démontrer les utilisations de dropna ().

Code:

In (3): df = pd.DataFrame(
('Company':('Google', 'Amazon', 'Infosys', 'Directi'),
'Age':('21', '23', '38', '22'),
'NetWorth ($ bn)':(300, np.nan, np.nan, 1.3),
'Founder':(np.nan, np.nan, np.nan, np.nan),
'Headquarter-Country':('United States', np.nan, 'India', 'India') ))
In (4): print(df)
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
1 Amazon 23 NaN NaN NaN
2 Infosys 38 NaN NaN India
3 Directi 22 1.3 NaN India

Le DataFrame imprimé sera manipulé dans notre démonstration ci-dessous.

2. Suppression de lignes et de colonnes

Le paramètre d'axe est utilisé pour supprimer des lignes ou des colonnes comme indiqué ci-dessous:

Code:

In (5): df.dropna(axis=1)

Production:

Out(5):
Company Age
0 Google 21
1 Amazon 23
2 Infosys 38
3 Directi 22

Toute colonne contenant au moins 1 NaN comme valeur de cellule est supprimée. Voyons comment les lignes (axe = 0) fonctionneront.
Remarque : il s'agit du comportement par défaut lorsque l'axe n'est pas spécifié explicitement.

Code:

In (6): df.dropna(axis=0)

Production:

Out(6):
Empty DataFrame
Columns: (Company, Age, NetWorth ($ bn), Founder, Headquarter-Country) Index: ()

Hmm, donc il n'y a plus de données dans le DataFrame retourné! Ce n'est évidemment pas le comportement souhaité. Voyons comment résoudre ce problème.

3. Utilisation de l'attribut de sous-ensemble

Les opérations précédentes étaient en baisse sur la base de toutes les colonnes lorsque l'axe = 0. Puisqu'il existe un fondateur de colonne qui n'a que des valeurs nulles, toutes les lignes sont supprimées. Précisons une colonne à utiliser pour le filtrage:

Code:

In (7): df.dropna(axis=0, subset=('NetWorth ($ bn)'))

Production:

Out(7):
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
3 Directi 22 1.3 NaN India

Maintenant, comme nous le voyons, seuls les enregistrements avec Nanvalue dans la colonne Networth sont supprimés. Le DataFrame retourné peut être à nouveau modifié en appliquant à nouveau dropna () pour filtrer les colonnes en passant axe = 1.

4. Utilisation du paramètre How

Par défaut, dropna () supprime la ligne / colonne complète même s'il ne manque qu'une seule valeur. Un revers rapide exposé ne doit être supprimé que lorsque toutes les valeurs d'une ligne / colonne sont nulles. Pour ce faire, définissez how = 'all' au lieu de how = 'any' (le comportement par défaut).

Code:

In (8): df.dropna(axis=1, how='all')

Production:

Out(8):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Maintenant, le DataFrame résultant peut être utilisé pour supprimer des lignes / colonnes avec une logique plus complexe si nécessaire.

5. Prendre le contrôle via Thresh

Le paramètre Thresh est probablement l'outil le plus puissant lorsqu'il est combiné avec le reste de manière appropriée.

Code:

In (17): df.dropna(axis=1, thresh=2)

Production:

Out(17):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

En définissant axis = 1 et thresh = 2, seules les colonnes avec au moins 2 valeurs non NaN sont conservées.

Conclusion

Les exemples ci-dessus sont de nature simpliste, mais sont suffisamment puissants pour traiter la majorité des problèmes que vous pourriez rencontrer dans des situations réelles. Néanmoins, il faut s'entraîner à combiner différents paramètres pour avoir une compréhension claire de leur utilisation et de la vitesse de construction dans leur application.

Articles recommandés

Ceci est un guide de Pandas.Dropna (). Nous discutons ici de ce qu'est Pandas.Dropna (), des paramètres et des exemples. Vous pouvez également consulter nos autres articles connexes pour en savoir plus-

  1. Qu'est-ce que les pandas
  2. PNL en Python
  3. Classe abstraite en Python
  4. Factorial en Python
  5. Programme factoriel en JavaScript