Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Trocar ponto por virgula l Arquivos de excel

Alguem ja tentou puxar arquivo em excel? as funcoes sum(), mean(), etc, não funcionam pois o python nao entende que as variaveis das colunas sao textos. Soluções:

  • trocar a virgula por um ponto
  • fazer que a coluna esteja no formato float64.

Alguem já teve esse problema?

6 respostas

Olá Henry,

Pode compartilhar o código e a planilha que você está utilizando para testar?

Eu fiz alguns testes simples e o panda já faz a conversão para float64, mesmo que na planilha esteja com ponto ou com vírgula. Apenas no caso de conter texto junto dos números que o pandas não entendeu como float64, como por exemplo R$ 123.65

Fala Lucas! Blz?

Claro! import pandas as pd dados = pd.read_excel('teste2.xlsx') dados['2018-08'].sum() '6844,7110081692,92466,61652,2407,652200,722860,13036,89425,93883,2514762222,851248,63'

nao da para eu subir um arquivo aqui, da?

Tem que fazer upload em outro lugar, como o drive, e manda o link aqui.

Segue: https://drive.google.com/file/d/1R7x7_xn4d8n_KnRRXSk1jQMZkxTrQtLC/view?usp=sharing

Mas acho que sei o que acontece. Sabe quando você abre um excel e ele vem com uma "seta" verde? segue print.. https://drive.google.com/open?id=1ReTAyGVQUw0H1MnhIyrliWd7GC8mI8B5

quando sobe assim, acho que ele nao le como numero

solução!

É como você está dizendo mesmo, nessa sua tabela os valores estão como texto, até o excel identificou que esse é um valor numérico mas que está configurado como texto.

É por isso que ele adiciona a seta verde que você falou, o excel reconheceu que tem um número salvo como texto e está avisando.

O jeito mais fácil de resolver é deixar como número no próprio excel, seleciona todos os valores que deve aparecer uma exclamação, clicando lá aparece a opção Converter em número:

Se for para fazer pelo código tem que fazer como você disse na primeira mensagem mesmo, substituir as vírgulas por pontos, e então converter. Exemplo:

data['2018-08'] = data['2018-08'].str.replace(',', '.').astype('float64')