Python Pandas - Application de fonction

Pour appliquer vos propres fonctions ou celles d'une autre bibliothèque à des objets Pandas, vous devez être conscient des trois méthodes importantes. Les méthodes ont été discutées ci-dessous. La méthode appropriée à utiliser dépend de si votre fonction s'attend à fonctionner sur un DataFrame entier, par ligne ou par colonne, ou par élément.

  • Application de fonction de table sage: pipe ()
  • Application de fonction de ligne ou de colonne Wise: apply ()
  • Application de la fonction élément par élément: applymap ()

Application de fonction par table

Les opérations personnalisées peuvent être effectuées en passant la fonction et le nombre approprié de paramètres comme arguments de canal. Ainsi, l'opération est effectuée sur l'ensemble du DataFrame.

Par exemple, ajoutez une valeur 2 à tous les éléments du DataFrame. Ensuite,

fonction additionneur

La fonction additionneur ajoute deux valeurs numériques en tant que paramètres et renvoie la somme.

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

Nous allons maintenant utiliser la fonction personnalisée pour effectuer des opérations sur le 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)

Ses output est comme suit -

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 fonction de ligne ou de colonne Wise

Des fonctions arbitraires peuvent être appliquées le long des axes d'un DataFrame ou d'un Panel à l'aide du apply(), qui, comme les méthodes de statistiques descriptives, prend un argument optionnel d'axe. Par défaut, l'opération s'effectue par colonne, en prenant chaque colonne comme un tableau.

Exemple 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)

Ses output est comme suit -

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64

En passant axis paramètre, les opérations peuvent être effectuées par ligne.

Exemple 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)

Ses output est comme suit -

col1    0.034093
col2   -0.152672
col3   -0.229728
dtype: float64

Exemple 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)

Ses output est comme suit -

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

Application de la fonction Element Wise

Toutes les fonctions ne peuvent pas être vectorisées (ni les tableaux NumPy qui retournent un autre tableau ni aucune valeur), les méthodes applymap() sur DataFrame et analogously map() on Series accepte toute fonction Python prenant une seule valeur et renvoyant une seule valeur.

Exemple 1

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

# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)

Ses output est comme suit -

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

Exemple 2

import pandas as pd
import numpy as np

# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print df.apply(np.mean)

Ses output est comme suit -

col1    0.395263
col2    0.204418
col3   -0.795188
dtype: float64