Comment appliquer une fonction à une colonne dans Pandas Dataframe

  1. Les méthodes apply() et transform() de Pandas
  2. Utilisez apply() pour appliquer une fonction à la colonne de Pandas DataFrame
  3. Utilisez transform() pour appliquer une fonction à une colonne de Pandas DataFrame

Dans Pandas, les colonnes et les cadres de données peuvent être transformés et manipulés à l’aide de méthodes telles que apply() et transform(). Les transformations souhaitées sont passées en argument aux méthodes sous forme de fonctions. Chaque méthode a ses différences subtiles et son utilité. Cet article présente la manière d’appliquer une fonction à une colonne ou à une trame de données entière.

Les méthodes apply() et transform() de Pandas

Les méthodes apply() et transform() opèrent toutes deux sur des colonnes individuelles et sur l’ensemble du DataFrame. La méthode apply() applique la fonction le long d’un axe spécifié. Elle transmet les colonnes comme un DataFrame à la fonction personnalisée, tandis qu’une méthode transform() transmet les colonnes individuelles comme Pandas Series à la fonction personnalisée.

La sortie de la méthode apply() est reçue sous la forme d’un dataframe ou d’une Series selon l’entrée, alors qu’elle est reçue sous la forme d’une séquence pour la méthode transform(). La syntaxe des méthodes apply() et transform() est identique à celle de la méthode :

Dataframe.apply(customFunction, axis=0)
Dataframe.transform(customFunction, axis=0)

Les arguments correspondent à

  • customFunction : la fonction à appliquer à la trame ou à la série de données.
  • axis : 0 fait référence à rows, et 1 fait référence à columns ; la fonction doit être appliquée soit sur les rows, soit sur les columns.

Utilisez apply() pour appliquer une fonction à la colonne de Pandas DataFrame

Maintenant que nous avons maîtrisé les bases, mettons la main sur les codes et comprenons comment utiliser la méthode apply() pour appliquer une fonction à une colonne d’un dataframe.

Nous utiliserons l’exemple de dataframe comme ci-dessous.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

appliquer une fonction à une colonne de dataframe - example.png

L’exemple de code permettant d’appliquer une fonction à l’ensemble du DataFrame est présenté ci-dessous.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

def add_2(x):
    return x+2

df = df.apply(add_2)
print(df)

Production :

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A   B   C
0  3   4   5
1  6   7   8
2  9  10  11

Comme vu ci-dessus, la fonction peut être appliquée à l’ensemble de la dataframe.

Appliquer une fonction à une seule colonne

Voyons ce qui se passe lorsque la fonction est appliquée le long d’une seule colonne.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

def add_2(x):
    return x+2

df['A'] = df['A'].apply(add_2)
print (df)

# or #

df['A'].transform(add_2)
print (df)

Production :

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A  B  C
0  3  2  3
1  6  5  6
2  9  8  9

Utilisez transform() pour appliquer une fonction à une colonne de Pandas DataFrame

Voyons comment utiliser la méthode transform() pour appliquer une fonction à une colonne de dataframe. Nous utiliserons le même exemple de dataframe que ci-dessus.

L’exemple de code pour appliquer une fonction à l’ensemble du DataFrame est présenté ci-dessous.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

def add_2(x):
    return x+2

df = df.transform(add_2)
print(df)

Production :

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A   B   C
0  3   4   5
1  6   7   8
2  9  10  11

Comme vu ci-dessus, la fonction peut être appliquée à l’ensemble du dataframe.

Appliquer une fonction à une seule colonne

Voyons ce qui se passe lorsque la fonction est appliquée le long d’une seule colonne.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

def add_2(x):
    return x+2

df['A'] = df['A'].transform(add_2)
print(df)

Production :

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A  B  C
0  3  2  3
1  6  5  6
2  9  8  9

Article connexe - Pandas DataFrame

  • Déposer les colonnes par index dans Pandas DataFrame
  • Soustraire deux colonnes d'un DataFrame de Pandas