Pandas DataFrame DataFrame.apply() Fonction

Suraj Joshi 30 janvier 2023
  1. Syntaxe de pandas.DataFrame.apply():
  2. Exemples de codes: méthode DataFrame.apply()
  3. Exemples de codes: appliquez la fonction à chaque colonne avec DataFrame.apply()
  4. Exemples de codes: appliquez la fonction à chaque ligne avec la méthode DataFrame.apply()
  5. Exemples de codes: méthode DataFrame.apply() avec le paramètre result_type
Pandas DataFrame DataFrame.apply() Fonction

La fonction pandas.DataFrame.apply() applique la fonction d’entrée à chaque élément de la ligne ou colonne de l’appelant Pandas DataFrame.

Syntaxe de pandas.DataFrame.apply():

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)

Paramètres

func La fonction à appliquer à chaque ligne ou colonne
axis appliquer la fonction le long de la ligne (axis = 0) ou de la colonne (axis = 1)
raw Booléen. Ligne / colonne passée en tant qu’objet Series ( raw = False) ou ndarray object ( raw = True)
result_type {expand, reduction, broadcast, None}
type de sortie d’opération applicable uniquement pour axis = 1 (colonnes)
Nouveau dans la version 0.23.0
args Arguments positionnels pour la fonction func.
**kwds Arguments de mot-clé pour la fonction func.

Revenir

Il retourne le DataFrame après avoir appliqué la fonction d’entrée le long de l’axe spécifié.

Exemples de codes: méthode DataFrame.apply()

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)

Production:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  9  64

Nous appliquons une fonction lambda - lambda x: x ** 2 à tous les éléments de DataFrame en utilisant la méthode DataFrame.apply().

Les fonctions lambda sont des moyens plus simples de définir des fonctions en Python.

lambda x: x ** 2 représente la fonction qui prend x en entrée et retourne x ** 2 en sortie.

Exemples de codes: appliquez la fonction à chaque colonne avec DataFrame.apply()

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)

Production:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
X     6
Y    13
dtype: int64

Ici, np.sum est appliqué à chaque colonne car axe = 0 (valeur par défaut) dans ce cas.

Ainsi, nous obtenons la somme des éléments dans chaque colonne après avoir utilisé la méthode df.apply().

import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name == 'X' else x)
print(modified_df)

Production:

   X  Y
0  1  4
1  2  1
2  3  8
   X  Y
0  1  4
1  4  1
2  9  8

Si nous souhaitons appliquer la fonction uniquement à certaines colonnes, nous modifions notre définition de fonction en utilisant l’instruction if pour filtrer les colonnes. Dans l’exemple, la fonction modifie uniquement la valeur des colonnes avec le nom de colonne X.

Exemples de codes: appliquez la fonction à chaque ligne avec la méthode DataFrame.apply()

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)

Production:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0     5
1     3
2    11
dtype: int64

Ici, np.sum est appliqué à chaque ligne à la fois car nous avons défini axe = 1 dans ce cas.

Ainsi, nous obtenons la somme des éléments individuels de toutes les lignes après avoir utilisé la méthode df.apply().

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name in [0,1] else x,
                     axis=1)
print(modified_df)

Production:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  3   8

Si nous souhaitons appliquer la fonction uniquement à certaines lignes, nous modifions notre définition de fonction en utilisant l’instruction if pour filtrer les lignes. Dans l’exemple, la fonction modifie uniquement les valeurs des lignes d’index 0 et 1, c’est-à-dire les première et deuxième lignes uniquement.

Exemples de codes: méthode DataFrame.apply() avec le paramètre result_type

Si nous utilisons la valeur par défaut du paramètre result_type c’est-à-dire None, il retournera le DataFrame sans aucune modification.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)

Production:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0    [1, 1]
1    [1, 1]
2    [1, 1]
dtype: object

Dans l’exemple ci-dessus, chaque ligne est passée en fonction à la fois, et la valeur de la ligne est définie sur [1,1].

Si nous souhaitons modifier le type de résultat après que la fonction a fonctionné sur DataFrame, nous pouvons définir des valeurs pour result_type selon nos besoins.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],
                     axis=1,
                     result_type='expand')
print("Modified DataFrame")
print(modified_df)

Production:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
   0  1
0  1  1
1  1  1
2  1  1

La définition de result_type = 'expand' étendra toutes les valeurs de type liste aux colonnes d’un Dataframe.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas DataFrame