Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Converter Strings em Float no DataFrame

Boa tarde. Minha duvida é o seguinte: Caso eu tenha um DataFrame com strings, como eu posso fazer para trocar os dados por 0 e 1 do tipo 'float64' ? Tentei alguns exemplos pela internet mas não obtive sucesso Por exemplo converter dados da coluna 'Sexo' para M = 0 e F = 1 e dados da Coluna 'Estado Civil' para Solteiro = 0 e Casado = 1.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Boas Vitor! Tudo bem? Espero que sim!

Existem diversas formas de fazzer isso, vou lhe apresentar aquela que entendo como a mais eficiente. Usaremos um dicionário e a função map() para fazer as transformações que você solicitou. Considerando o DataFrame:

df = pd.DataFrame(
    [
     {'Filhos':1, 'Sexo': 'M', 'Estado Civil': 'Casado'},
     {'Filhos':2, 'Sexo': 'F', 'Estado Civil': 'Casado'},
     {'Filhos':5, 'Sexo': 'F', 'Estado Civil': 'Casado'},
     {'Filhos':0, 'Sexo': 'F', 'Estado Civil': 'Casado'},
     {'Filhos':6, 'Sexo': 'M', 'Estado Civil': 'Casado'},
     {'Filhos':3, 'Sexo': 'M', 'Estado Civil': 'Casado'},


    ]
)

ou, visualmente:

    Filhos    Sexo    Estado Civil
0    1         M            Casado
1    2         F            Casado
2    5         F            Casado
3    0         F            Casado
4    6         M            Casado
5    3         M            Casado

Primeiro, vamos montar um dicionário onde as chaves são os valores que temos no DataFrame, e os valores o que desejamos que seja inserido. No seu caso seria:

sexo = {'M': 0, 'F': 1}

Então, vamos usar a função map() para substituir o conteúdo da coluna Sexo de acordo com o dicionário:

df['Sexo'] = df['Sexo'].map(sexo)

Resultando em:

    Filhos    Sexo    Estado Civil
    0    1        0    Casado
    1    2        1    Casado
    2    5        1    Casado
    3    0        1    Casado
    4    6        0    Casado
    5    3        0    Casado

A função map() troca os valores da coluna selecionada (no caso Sexo) de acordo com o dicionário passado como parâmetro.

Aliás, se consultarmos o tipo de df['Sexo'], ele é um float64, como você tinha solicitado.

O mesmo pode ser feito com estado civil.

Espero ter ajudado! Bons estudos!