3 fonctions numpy pour faciliter analyse de donnees pandas

Boostez votre code Pandas avec 3 fonctions NumPy pour faciliter vos analyses de données !

Pandas et NumPy sont les deux bibliothèques Python les plus populaires utilisées pour l’analyse et la manipulation de données. Pandas est équipé d’un grand nombre de fonctions bien utiles.

Pandas permet également d’utiliser certaines fonctions NumPy, ce qui se traduit par des opérations plus fonctionnelles et efficaces avec Pandas. Dans cet article, nous allons passer en revue 3 fonctions NumPy qui sont d’une grande aide lors de l’analyse de données avec Pandas.

Commençons par importer les bibliothèques et créer un échantillon de données aléatoires sur lequel travailler.

import numpy as np
import pandas as pd

df = pd.DataFrame({
    "A": np.random.randint(10, size=6),
    "B": np.random.randint(20, size=6),
    "C": np.random.randint(10,20, size=6),
    "D": np.random.random(6).round(2)
})

df
DataFrame exemple

Where

La première fonction qui nous intéresse est la fonction where qui fournit un moyen pratique de créer des colonnes conditionnelles.

Nous passons une condition à la fonction where et déterminons une valeur distincte pour les lignes qui satisfont et ne satisfont pas la condition.

Par exemple, nous pouvons créer une colonne « E » qui prend la valeur 1 si les deux valeurs des colonnes « B » et « C » sont supérieures à 10. Sinon, la valeur de la colonne « E » est 0.

df["E"] = np.where((df["B"] > 10) & (df["C"] > 10), 1, 0)

df
3 fonctions NumPy : WHERE

Nous pouvons combiner autant de conditions que nécessaire en utilisant des opérateurs logiques.

Select

La fonction select est comme une version améliorée de la fonction where. Nous pouvons appliquer plusieurs conditions pour déterminer une valeur distincte pour chacune d’elles.

Avec la fonction where, nous pouvons seulement tester une condition (ou un ensemble de conditions) et déterminer deux valeurs. La fonction select va un peu plus loin. Nous pouvons tester plusieurs conditions (ou plusieurs ensembles de conditions) et attribuer une valeur distincte aux lignes qui remplissent chaque ensemble de conditions. Elle permet également de spécifier une valeur par défaut à utiliser pour les lignes qui ne remplissent aucune des conditions.

Ce sera plus clair avec un exemple :

conditions = [
  (df["B"] >= 7) & (df["A"] == 8),
  (df["B"] >= 11) & (df["A"] == 7)
]

values = [1, 2]

df["F"] = np.select(conditions, values, default=0)

df
3 fonctions NumPy : SELECT

Log

La fonction log, comme son nom l’indique, permet de prendre le logarithme d’une valeur.

np.log10(100)
# 2.0

np.log2(16)
# 4.0

np.log(1000)
# 6.907755278982137

Heureusement, nous pouvons appliquer la fonction log à une colonne entière d’un DataFrame. Prendre le logarithme d’une colonne est une pratique utile dans de nombreux cas. Par exemple, si la variable cible d’un modèle de Machine Learning comprend des valeurs aberrantes, il est préférable d’utiliser le logarithme de la variable cible dans le modèle. Les modèles linéaires sur une échelle logarithmique sont fréquemment utilisés dans le Machine Learning.

Nous avons le DataFrame suivant :

DataFrame exemple pour la fonction log

Les valeurs 600 et 850 sont assez importantes par rapport aux autres valeurs de la colonne cible. Prenons le logarithme de cette colonne pour voir la différence.

df["log_target"] = np.log(df["target"])

df
3 fonctions NumPy : LOG

Les différences sont devenues plus petites grâce à la fonction log.

Conclusion pour les fonctions NumPy (en général)

NumPy et Pandas vont de pair. En fait, Pandas et d’autres bibliothèques Python ont été construites sur la base de NumPy.

Dans la plupart des cas, nous sommes en mesure d’accomplir une tâche avec les fonctions Pandas. Cependant, l’utilisation des fonctions NumPy dans certains cas offre des avantages et des fonctionnalités supplémentaires.

Merci pour votre lecture 🙂

N’hésitez pas à me faire part de vos commentaires.

Et pour aller plus loin sur NumPy & Pandas, voici le guide de la bibliothèque NumPy et 12 fonction NumPy et Pandas.

A lire également