Pandas map Python

Suraj Joshi 26 aprile 2021
Pandas map Python

Questo tutorial spiega come possiamo sostituire i valori di una serie Pandas con un altro valore utilizzando il metodo Series.map().

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

print(my_series, "\n")

Produzione:

1    85
2    87
3    90
4    89
dtype: int64

Useremo la serie my_series mostrata nell’esempio sopra per spiegare il funzionamento del metodo map() in Pandas.

pandas.Series.map()

Sintassi

Series.map(arg, na_action=None)

Restituisce un oggetto Series sostituendo i valori nell’oggetto Series chiamante in base al parametro arg. L’argomento arg può essere un oggetto funzione, dizionario o Series che determina quali sono i nuovi valori dell’oggetto Series.

Il parametro na_action può prendere None o 'ignore' come suo valore. Il valore 'ignore' di na_action indica di ignorare i valori NaN nella Series e non fare nulla per loro.

Esempio: usa il metodo map() per una serie di pandas

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

altered_series = my_series.map({85: 80, 87: 80, 90: 90, 89: 80})

print("Initial Series:")
print(my_series, "\n")

print("Altered Series:")
print(altered_series, "\n")

Produzione:

Initial Series:
1    85
2    87
3    90
4    89
dtype: int64

Altered Series:
1    80
2    80
3    90
4    80
dtype: int64

Sostituisce gli elementi di my_series a seconda dei valori specificati nel dizionario passati come argomento al metodo map().

Possiamo anche usare le funzioni per cambiare i valori della serie Pandas usando il metodo map().

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

altered_series = my_series.map(lambda x: str(x) + ".00")

print("Initial Series:")
print(my_series, "\n")

print("Altered Series:")
print(altered_series, "\n")

Produzione:

Initial Series:
1    85
2    87
3    90
4    89
dtype: int64

Altered Series:
1    85.00
2    87.00
3    90.00
4    89.00
dtype: object

Prende ogni elemento di my_series e aggiunge .00 alla fine di ogni elemento in my_series.

Esempio: usa il metodo map() per modificare una particolare colonna di un DataFrame

import pandas as pd

df_1 = pd.DataFrame(
    {
        "Column 1": [85, 87, 90, 89],
        "Column 2": [55, 54, 56, 66],
        "Column 3": [23, 95, 65, 45],
    },
    index=["1", "2", "3", "4"],
)

print("Initial DataFrame:")
print(df_1, "\n")

df_1["Column 1"] = df_1["Column 1"].map(lambda x: x * 10)

print("DataFrame after changing Column 1:")
print(df_1)

Produzione:

Initial DataFrame:
   Column 1  Column 2  Column 3
1        85        55        23
2        87        54        95
3        90        56        65
4        89        66        45

DataFrame after changing Column 1:
   Column 1  Column 2  Column 3
1       850        55        23
2       870        54        95
3       900        56        65
4       890        66        45

Applicherà la funzione lambda solo alla Column 1 del DataFrame utilizzando il metodo map(). Poiché la singola colonna è un oggetto Series, possiamo usare il metodo map() con una colonna di DataFrame. Quindi assegniamo l’oggetto Series restituito dal metodo map() alla Column 1 del DataFrame df_1. In questo modo, possiamo modificare i valori della particolare colonna solo di un DataFrame.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Pandas Series