Series Pandas Series.map() Função

Minahil Noor 30 janeiro 2023
  1. Sintaxe de pandas.series.map()
  2. Códigos de exemplo: Series.map()
  3. Códigos de exemplo: Series.map() para passar um Dicionário como parâmetro arg
  4. Códigos de exemplo: Series.map() para passar uma função como arg Parâmetro
  5. Códigos de exemplo: Series.map() aplicar num DataFrame
Series Pandas Series.map() Função

Python Pandas Series.map() função substitui os valores de uma Series. Os valores substituídos podem ser derivados de um Series, dicionário, ou função. Esta função funciona apenas para uma Series. Se aplicarmos esta função a uma DataFrame, então ela gerará um AttributeError.

Sintaxe de pandas.series.map()

Series.map(arg, na_action=None)

Parâmetros

arg É uma função, dicionário, ou uma Series. Os valores a serem substituídos são derivados desta função, dicionário, ou Series.
na_action Este parâmetro aceita dois valores: None e ignore. O seu valor por defeito é None. Se o seu valor é ignore então não mapeia os valores derivados para valores NaN. Ignora os valores NaN.

Devolver

Devolve uma Series com o mesmo índice que a pessoa que telefona.

Códigos de exemplo: Series.map()

Geraremos uma Series que contém os valores NaN para verificar a saída depois de passar o parâmetro na_action.

import pandas as pd
import numpy as np

series = pd.Series(['Rose', 
                    'Lili', 
                    'Tulip', 
                    np.NaN, 
                    'Orchid', 
                    'Hibiscus', 
                    'Jasmine', 
                    'Daffodil',
                    np.NaN , 
                    'SunFlower', 
                    'Daisy'])

print(series)

O exemplo da Series é,

0          Rose
1          Lili
2         Tulip
3           NaN
4        Orchid
5      Hibiscus
6       Jasmine
7      Daffodil
8           NaN
9     SunFlower
10        Daisy
dtype: object

Utilizamos NumPy para gerar valores NaN.

O parâmetro arg é um parâmetro obrigatório. Se não for passado, então a função gera um TypeError. Vamos primeiro passar uma série como parâmetro arg.

Para mapear duas séries, a última coluna da primeira série deve ser a mesma que o índice da segunda série.

import pandas as pd
import numpy as np

first_series = pd.Series(
    [
        "Rose",
        "Lili",
        "Tulip",
        np.NaN,
        "Orchid",
        "Hibiscus",
        "Jasmine",
        "Daffodil",
        np.NaN,
        "SunFlower",
        "Daisy",
    ]
)

second_series = pd.Series(
    [23, 34, 67, 90, 21, 45, 29, 70, 56],
    index=[
        "Rose",
        "Lili",
        "Tulip",
        "Orchid",
        "Hibiscus",
        "Jasmine",
        "Daffodil",
        "SunFlower",
        "Daisy",
    ],
)

series1 = first_series.map(second_series)
print(series1)

Resultado:

0     23.0
1     34.0
2     67.0
3      NaN
4     90.0
5     21.0
6     45.0
7     29.0
8      NaN
9     70.0
10    56.0
dtype: float64

Note-se que a função substituiu os valores depois de comparar as duas Series.

Códigos de exemplo: Series.map() para passar um Dicionário como parâmetro arg

import pandas as pd
import numpy as np

series = pd.Series(
    [
        "Rose",
        "Lili",
        "Tulip",
        np.NaN,
        "Orchid",
        "Hibiscus",
        "Jasmine",
        "Daffodil",
        np.NaN,
        "SunFlower",
        "Daisy",
    ]
)

dictionary = {
    "Rose": "One",
    "Lili": "Two",
    "Orchid": "Three",
    "Jasmine": "Four",
    "Daisy": "Five",
}

series1 = series.map(dictionary)
print(series1)

Resultado:

0       One
1       Two
2       NaN
3       NaN
4     Three
5       NaN
6      Four
7       NaN
8       NaN
9       NaN
10     Five
dtype: object

Os valores na Series que não estão no dicionário são substituídos por um valor NaN.

Códigos de exemplo: Series.map() para passar uma função como arg Parâmetro

Agora vamos passar uma função como parâmetro.

import pandas as pd
import numpy as np

series = pd.Series(
    [
        "Rose",
        "Lili",
        "Tulip",
        np.NaN,
        "Orchid",
        "Hibiscus",
        "Jasmine",
        "Daffodil",
        np.NaN,
        "SunFlower",
        "Daisy",
    ]
)

series1 = series.map("The name of the flower is {}.".format)
print(series1)

Resultado:

0          The name of the flower is Rose.
1          The name of the flower is Lili.
2         The name of the flower is Tulip.
3           The name of the flower is nan.
4        The name of the flower is Orchid.
5      The name of the flower is Hibiscus.
6       The name of the flower is Jasmine.
7      The name of the flower is Daffodil.
8           The name of the flower is nan.
9     The name of the flower is SunFlower.
10        The name of the flower is Daisy.
dtype: object

Aqui, passámos string.format() função como parâmetro. Note-se que a função também foi aplicada aos valores NaN. Se não quisermos aplicar esta função aos valores NaN, então passaremos o valor ignore ao parâmetro na_action.

import pandas as pd
import numpy as np

series = pd.Series(
    [
        "Rose",
        "Lili",
        "Tulip",
        np.NaN,
        "Orchid",
        "Hibiscus",
        "Jasmine",
        "Daffodil",
        np.NaN,
        "SunFlower",
        "Daisy",
    ]
)

series1 = series.map("The name of the flower is {}.".format, na_action="ignore")
print(series1)

Resultado:

0          The name of the flower is Rose.
1          The name of the flower is Lili.
2         The name of the flower is Tulip.
3                                      NaN
4        The name of the flower is Orchid.
5      The name of the flower is Hibiscus.
6       The name of the flower is Jasmine.
7      The name of the flower is Daffodil.
8                                      NaN
9     The name of the flower is SunFlower.
10        The name of the flower is Daisy.
dtype: object

O código do exemplo acima ignorou os valores NaN.

Códigos de exemplo: Series.map() aplicar num DataFrame

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)

dataframe1 = dataframe.map("The flower name is {}.".format)
print(dataframe1)

Resultado:

AttributeError: 'DataFrame' object has no attribute 'map'

A função gerou o AttributeError.

Artigo relacionado - Pandas Series