Series Pandas Series.map() Função
-
Sintaxe de
pandas.series.map() -
Códigos de exemplo:
Series.map() -
Códigos de exemplo:
Series.map()para passar um Dicionário como parâmetroarg -
Códigos de exemplo:
Series.map()para passar uma função comoargParâmetro -
Códigos de exemplo:
Series.map()aplicar num DataFrame
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.