English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Application de fonctions Pandas

Exemple d'opération de reconstruction de l'index Pandas

Pour appliquer une fonction de votre propre bibliothèque ou d'une autre bibliothèque à un objet Pandas, vous devez comprendre trois méthodes importantes. Voici comment utiliser ces méthodes. Le méthode appropriée à utiliser dépend de ce que vous souhaitez faire avec votre fonction : opérer sur l'ensemble du DataFrame, sur les lignes, sur les colonnes ou sur les éléments.

Application de fonctions de tableau : pipe() Application de fonctions sur les lignes ou les colonnes : apply() Application de fonctions au niveau des éléments : applymap()

Application de fonctions de tableau

Il est possible d'exécuter des opérations personnalisées sur un DataFrame en passant une fonction et un nombre approprié de paramètres en tant que paramètres de canal.

Fonction d'additionneur

Par exemple, ajouter2Ajouter une valeur à un DataFrame. La fonction d'additionneur ajoute deux valeurs numériques et retourne la somme.

  def adder(ele1,ele2) :
    return ele1+ele2

Nous utilisons une fonction personnalisée pour opérer sur un DataFrame.

 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)

Voyons le programme complet :

 import pandas as pd
 import numpy as np
 def adder(ele1,ele2) :
    return ele1+ele2
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)
 print(df.apply(np.mean))

Résultat de l'exécution :

       col1 col2 col3
 0 2.176704 2.219691 1.509360
 1 2.222378 2.422167 3.953921
 2 2.241096 1.135424 2.696432
 3 2.355763 0.376672 1.182570
 4 2.308743 2.714767 2.130288

Application de fonctions sur les lignes ou les colonnes

Il est possible d'appliquer une fonction à l'axe d'un DataFrame ou d'un Panel à l'aide de la méthode apply(), qui fonctionne de la même manière que les méthodes de statistiques descriptives, en utilisant le paramètre optionnel axis. Par défaut, cette opération est effectuée en colonnes, chaque colonne étant traitée comme une forme d'array.

Instance 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean)
 print(df.apply(np.mean))

Résultat de l'exécution :

 col1 -0.288022
 col2 1.044839
 col3 -0.187009
 dtype: float64

En passant le paramètre axis, vous pouvez effectuer l'opération ligne par ligne.

Instance 2

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean,axis=1)
 print(df.apply(np.mean))

Résultat de l'exécution :

 col1 0.034093
 col2 -0.152672
 col3 -0.229728
 dtype: float64

Instance 3

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(lambda x: x.max() - x.min())
 print(df.apply(np.mean))

Résultat de l'exécution :

 col1 -0.167413
 col2 -0.370495
 col3 -0.707631
 dtype: float64

Application de fonctions au niveau d'élément

Tous les fonctions ne peuvent pas être vectorisées (les tableaux NumPy ne retournent ni un autre tableau ni aucune valeur), la méthode applymap() sur DataFrame et la méthode map() sur Series acceptent toutes les fonctions Python qui prennent une valeur unique et retournent une valeur unique.

Instance 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 # Fonction personnalisée
 df['col1'].map(lambda x:x*100)
 print(df.apply(np.mean))

Résultat de l'exécution :

 col1 0.480742
 col2 0.454185
 col3 0.266563
 dtype: float64

Instance 2

 import pandas as pd
 import numpy as np
 # Fonction personnalisée
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.applymap(lambda x:x*100)
 print(df.apply(np.mean))

Résultat de l'exécution :

 col1 0.395263
 col2 0.204418
 col3 -0.795188
 dtype: float64