Función Pandas Series Series.map()
-
La sintaxis de
pandas.Series.map()
-
Códigos de ejemplo:
Series.map()
-
Códigos de ejemplo:
Series.map()
para pasar un diccionario como parámetroarg
-
Códigos de ejemplo:
Series.map()
para pasar una función como parámetroarg
-
Códigos de ejemplo:
Series.map()
para aplicarla en un DataFrame
La función Python Pandas Series.map()
sustituye los valores de una Series
. Los valores sustituidos pueden derivarse de una Series
, un diccionario o una función. Esta función funciona sólo para una Series
. Si aplicamos esta función a un DataFrame
entonces generará un AttributeError
.
La sintaxis de pandas.Series.map()
Series.map(arg, na_action=None)
Parámetros
arg |
Es una función, un diccionario, o una Series . Los valores a sustituir se derivan de esta función, diccionario o Series . |
na_action |
Este parámetro acepta dos valores: None e ignore . Su valor por defecto es None . Si su valor es “ignorar”, entonces no asigna los valores derivados a los valores de NaN. Ignora los valores NaN . |
Retorna
Devuelve una Series
con el mismo índice que la persona que llama.
Códigos de ejemplo: Series.map()
Generaremos una Series
que contiene los valores NaN
para comprobar la salida después de pasar el 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)
El ejemplo Series
es,
0 Rose
1 Lili
2 Tulip
3 NaN
4 Orchid
5 Hibiscus
6 Jasmine
7 Daffodil
8 NaN
9 SunFlower
10 Daisy
dtype: object
Usamos NumPy
para generar valores NaN
.
El parámetro arg
es un parámetro obligatorio. Si no se pasa, entonces la función genera un TypeError
. Primero pasaremos una serie como parámetro arg
.
Para mapear dos Series la última columna de la primera Serie debe ser la misma que el índice de la segunda Serie.
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)
Producción:
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 que la función ha sustituido los valores después de comparar las dos Series
.
Códigos de ejemplo: Series.map()
para pasar un diccionario 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)
Producción:
0 One
1 Two
2 NaN
3 NaN
4 Three
5 NaN
6 Four
7 NaN
8 NaN
9 NaN
10 Five
dtype: object
Los valores de la Series
que no están en el diccionario son reemplazados por un valor NaN
.
Códigos de ejemplo: Series.map()
para pasar una función como parámetro arg
Ahora pasaremos una función 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)
Producción:
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
Aquí, hemos pasado la función string.format()
como parámetro. Note que la función ha sido aplicada a los valores NaN
también. Si no queremos aplicar esta función a los valores de NaN entonces pasaremos el valor ignore
al 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)
Producción:
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
El código de ejemplo anterior ha ignorado los valores NaN
.
Códigos de ejemplo: Series.map()
para aplicarla en un 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)
Producción:
AttributeError: 'DataFrame' object has no attribute 'map'
La función ha generado el AttributeError
.