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

Como converter dados no Pandas (dtypes)

Olá, para praticar o que aprendi com os cursos peguei uma base de dados no Kaggle. Porém como o dataset é referente a uma pesquisa aplicada no Brasil, os dados numéricos seguem o padrão nacional de formatação, ou seja, as casas decimais estão separadas por vírgulas (por exemplo 10, 50 ao invés de 10.50). Por conta disso não consigo manipular esses dados já que o pandas trata esses valores como "object" ao invés de "float". Tentei converter da seguinte maneira mas não consegui (justamente por estar usando vírgulas ao invés de pontos):

dataset["Coluna_A"] = dataset["Coluna_A"].astype(float)

Alguém consegue me ajudar?

1 resposta
solução!

Oiii Rafael, como você está?

Antes de fazer a conversão para float, troque as vírgulas por ponto através do método replace. Como exemplo, observe o seguinte dataframe que inicialmente possui a coluna Preço com seus valores separados por vírgula:

Imagem que mostra um dataframe de exemplo, onde a coluna Preço possui valores separados por vírgula e também é grifado o comando df.dtypes para mostrar o tipo das colunas, que para a coluna Preço é object

Se tentarmos converter a coluna Preço para float da forma como fez, obteremos o seguinte erro:

ValueError: could not convert string to float: '10,50'

E isso porque o pandas não consegue interpretar a vírgula, mas sim o ponto. Vamos agora substituir onde tem vírgula para ponto, veja:

df['Preço'] = df['Preço'].str.replace(',', '.')

Resultado:

Resultado da substituição de vírgula por ponto

De posse disso podemos fazer a conversão para float:

df['Preço'] = df['Preço'].astype(float)

Quando executarmos o comando dtypes para vermos os tipos das colunas, observe que agora temos um float:

Resultado do comando dtypes

Espero ter ajudado e qualquer dúvida estou a disposição.

Grande abraço!