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