Funzione Pandas DataFrame DataFrame.transform()

Minahil Noor 30 gennaio 2023
  1. Sintassi di pandas.DataFrame.transform()
  2. Codici di esempio: DataFrame.transform()
  3. Codici di esempio: DataFrame.transform() per utilizzare la stringa sqrt come funzione
  4. Codici di esempio: DataFrame.transform() per passare l’lista delle funzioni
  5. Funzione DataFrame.apply() vs DataFrame.transform()
Funzione Pandas DataFrame DataFrame.transform()

Python Pandas DataFrame.transform() applica una funzione su un DataFrame e trasforma il DataFrame. La funzione da applicare viene passata come parametro alla funzione transform(). Il DataFrame trasformato dovrebbe avere la stessa lunghezza dell’asse del DataFrame originale.

Sintassi di pandas.DataFrame.transform()

DataFrame.transform(func, axis, *args, **kwargs)

Parametri

func È la funzione da applicare al DataFrame. Apporta un cambiamento nei valori del DataFrame. Può essere una funzione, una stringa del nome della funzione, una lista di funzioni o nomi di funzioni o un dizionario delle etichette degli assi.
axis È un numero intero o una stringa. Specifica l’asse di destinazione righe o colonne. Può essere 0 o index per le righe e 1 o columns per le colonne.
*args Questi sono gli argomenti posizionali da passare alla funzione.
**kwargs Questi sono gli argomenti della parola chiave aggiuntivi da passare alla funzione.

Ritorno

Restituisce un DataFrame trasformato che ha la stessa lunghezza dell’originale DataFrame. Se il DataFrame restituito ha una lunghezza diversa, la funzione solleva un ValueError.

Codici di esempio: DataFrame.transform()

Proviamo prima questa funzione aggiungendo un numero a ciascun valore del DataFrame.

import pandas as pd

dataframe = pd.DataFrame({
                            'A': 
                                {0: 6, 
                                1: 20, 
                                2: 80,
                                3: 78,
                                4: 95}, 
                            'B': 
                                {0: 60, 
                                1: 50, 
                                2: 7,
                                3: 67,
                                4: 54}
                        })

print(dataframe)

L’esempio DataFrame è,

    A   B
0   6  60
1  20  50
2  80   7
3  78  67
4  95  54
5  98  34

Questa funzione ha un solo parametro obbligatorio, cioè func. Ora useremo questa funzione per aggiungere 20 a ciascun valore del DataFrame.

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func=lambda x: x + 20)
print(dataframe1)

Produzione:

     A   B
0   26  80
1   40  70
2  100  27
3   98  87
4  115  74
5  118  54

La parola chiave lambda viene utilizzata per dichiarare una funzione di addizione anonima qui.

Codici di esempio: DataFrame.transform() per utilizzare la stringa sqrt come funzione

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func="sqrt")
print(dataframe1)

Produzione:

          A         B
0  2.449490  7.745967
1  4.472136  7.071068
2  8.944272  2.645751
3  8.831761  8.185353
4  9.746794  7.348469
5  9.899495  5.830952

Qui, invece di passare una funzione lambda, abbiamo passato il nome della funzione come una stringa.

Codici di esempio: DataFrame.transform() per passare l’lista delle funzioni

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func=["sqrt", "exp"])
print(dataframe1)

Produzione:

          A                       B              
       sqrt           exp      sqrt           exp
0  2.449490  4.034288e+02  7.745967  1.142007e+26
1  4.472136  4.851652e+08  7.071068  5.184706e+21
2  8.944272  5.540622e+34  2.645751  1.096633e+03
3  8.831761  7.498417e+33  8.185353  1.252363e+29
4  9.746794  1.811239e+41  7.348469  2.830753e+23

Abbiamo passato una lista di due nomi di funzioni cioè ['sqrt', 'exp'] come func. Il DataFrame restituito contiene due colonne extra a causa di una funzione extra.

Funzione DataFrame.apply() vs DataFrame.transform()

Possiamo anche ottenere i risultati di cui sopra utilizzando la funzione DataFrame.apply(). Ma se confrontiamo queste due funzioni, diremo che la funzione DataFrame.transform() è più efficiente per gestire le manipolazioni complesse.

Articolo correlato - Pandas DataFrame