Pandas map

Este tutorial explica como podemos substituir valores de uma Série de Pandas por outro valor utilizando o método Series.map().

import pandas as pd

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

print(my_series,"\n")

Resultado:

1    85
2    87
3    90
4    89
dtype: int64

Vamos utilizar a Série my_series apresentada no exemplo acima para explicar o funcionamento do método map() em Pandas.

pandas.Series.map()

Sintaxe

Series.map(arg,
           na_action=None)

Retorna um objecto Series substituindo os valores do objecto que chama Series com base no parâmetro arg. O arg pode ser um função, dicionário ou Series que determina quais são os novos valores do objecto Series.

O parâmetro na_action pode tomar como valor None ou 'ignore'. O valor 'ignore' indica ignorar os valores NaN na Series e não lhes fazer nada.

Exemplo: Utilize map() Método para uma Série 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")

Resultado:

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

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

Substitui os elementos de my_series dependendo dos valores especificados no dicionário passado como argumento ao método map().

Também podemos utilizar funções para alterar os valores da Série Pandas utilizando o método 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")

Resultado:

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

Pega em cada elemento da my_series e anexa .00 no final de cada elemento da my_series.

Exemplo: Utilize o map() Método para alterar a coluna particular de uma 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)

Resultado:

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

Aplicará a função lambda apenas à Column 1 da DataFrame utilizando o método map(). Como a coluna única é um objecto Series, podemos utilizar o método map() com uma coluna de DataFrame. Em seguida, atribuímos o objecto Series devolvido do método map() de volta à Column 1 do método df_1 DataFrame. Desta forma, só podemos alterar os valores da coluna específica de um DataFrame.

Artigo relacionado - Pandas Series

  • Converter Pandas Series em DataFrame