Appliquer la fonction à chaque ligne dans Pandas DataFrame
-
Syntaxe de base de la fonction
apply()
de Pandas -
Appliquer la fonction
lambda
à chaque ligne dans le PandasDataFrame
-
Appliquer une fonction
NumPy
à chaque ligne de PandasDataFrame
-
Appliquer une fonction définie par l’utilisateur à chaque ligne de Pandas
DataFrame
avec des arguments -
Appliquer une fonction définie par l’utilisateur à chaque ligne de Pandas
DataFrame
sans arguments
Pandas est une bibliothèque python, qui fournit une liste énorme de classes et de fonctions pour effectuer plus facilement des tâches d’analyse et de manipulation de données. Nous manipulons les données dans le DataFrame
des pandas sous forme de lignes et de colonnes. Par conséquent, la plupart du temps, nous devons appliquer des fonctions appropriées à chaque ligne ou colonne pour obtenir les résultats souhaités.
Cet article explorera comment utiliser les pandas pour appliquer une fonction à chaque ligne du Pandas DataFrame
. De plus, nous montrerons comment appliquer diverses fonctions telles que la fonction lambda
, une fonction définie par l’utilisateur et la fonction NumPy
à chaque ligne d’un DataFrame
pandas.
Syntaxe de base de la fonction apply()
de Pandas
La syntaxe de base suivante est utilisée pour appliquer la fonction apply()
des pandas :
DataFrame.apply(function, axis, args=())
Voir Dans la syntaxe ci-dessus, la fonction doit être appliquée à chaque ligne. L’axis
est l’argument le long duquel la fonction est appliquée dans le DataFrame
. Par défaut, la valeur axis
est 0
. La valeur de axis=1
, si la fonction s’applique à chaque ligne. Les args
représentent le tuple ou la liste des arguments passés à la fonction.
En utilisant la fonction apply()
des pandas, nous pouvons facilement appliquer différentes fonctions à chaque ligne du DataFrame
. Les moyens énumérés ci-dessous nous aident à atteindre cet objectif :
Appliquer la fonction lambda
à chaque ligne dans le Pandas DataFrame
Pour appliquer la fonction lambda
à chaque ligne du DataFrame
, nous avons utilisé la fonction lambda
comme premier argument dans le DataFrame
, et axis=1 passé comme deuxième argument dans le dataframe.apply()
en utilisant le DataFrame
créé ci-dessus.
Pour voir comment appliquer la fonction lambda
à chaque ligne du DataFrame
, essayez l’exemple suivant :
Exemples de codes :
import pandas as pd
import numpy as np
from IPython.display import display
# List of Tuples data
data = [
(1, 34, 23),
(11, 31, 11),
(22, 16, 21),
(33, 32, 22),
(44, 33, 27),
(55, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe before applying lambda function: ", sep="\n")
display(dataframe)
# Apply a lambda function to each row by adding 10
new_dataframe = dataframe.apply(lambda x: x + 10, axis=1)
print("Modified New Dataframe by applying lambda function on each row:")
display(new_dataframe)
Production :
Original Dataframe before applying lambda function:
A B C
0 1 34 23
1 11 31 11
2 22 16 21
3 33 32 22
4 44 33 27
5 55 35 11
Modified Dataframe by applying lambda function on each row:
A B C
0 11 44 33
1 21 41 21
2 32 26 31
3 43 42 32
4 54 43 37
5 65 45 21
Appliquer une fonction NumPy
à chaque ligne de Pandas DataFrame
On peut aussi utiliser la fonction NumPy
passée en argument à dataframe.apply()
. Dans l’exemple suivant, nous appliquons la fonction NumPy
à chaque ligne et calculons la racine carrée de chaque valeur.
Exemples de codes :
import pandas as pd
import numpy as np
from IPython.display import display
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a numpy function to every row by taking square root of each value
new_dataframe = dataframe.apply(np.sqrt, axis=1)
print("Modified Dataframe by applying numpy function on each row:", sep="\n")
display(new_dataframe)
if __name__ == "__main__":
main()
Production :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying numpy function on each row:
A B C
0 1.414214 1.732051 2.000000
1 1.732051 2.236068 3.162278
2 6.633250 4.000000 1.414214
3 7.416198 5.656854 3.464102
4 7.745967 5.744563 5.196152
5 8.774964 5.916080 3.316625
Appliquer une fonction définie par l’utilisateur à chaque ligne de Pandas DataFrame
avec des arguments
Nous pouvons également passer la fonction définie par l'utilisateur
en tant que paramètre dans le dataframe.apply
avec un argument. Dans l’exemple suivant, nous avons passé une fonction définie par l’utilisateur avec l’argument args=[2]
. Chaque série de valeurs de ligne est multipliée par 2.
Voir l’exemple suivant :
Exemple de code :
import pandas as pd
import numpy as np
from IPython.display import display
def multiplyData(x, y):
return x * y
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function with arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(multiplyData, axis=1, args=[2])
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Production :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 4 6 8
1 6 10 20
2 88 32 4
3 110 64 24
4 120 66 54
5 154 70 22
Appliquer une fonction définie par l’utilisateur à chaque ligne de Pandas DataFrame
sans arguments
Nous pouvons également appliquer une fonction définie par l’utilisateur à chaque ligne sans aucun argument. Voir l’exemple suivant :
Exemples de codes :
import pandas as pd
import numpy as np
from IPython.display import display
def userDefined(x):
return x * 4
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function without arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(userDefined, axis=1)
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Production :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 8 12 16
1 12 20 40
2 176 64 8
3 220 128 48
4 240 132 108
5 308 140 44
Article connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme