Ir para conteúdo
  • 0

Pandas


Pergunta

  • Alunos

Bom Dia Galera,

  é o seguinte fiz um script em pandas para usar como ETL, converter as colunas que eu quero em float, tudo bonitinho, mais quando levo o código para o power bi 

ele e converto a coluna de novo para o decimal, ele perde a referencia do ponto, EX:  tenho uma coluna com um numero 12.50  do tipo texto e vou converte para decimal usando o power bi ele se torna 1250, poderia me ajudar a resolver isso, qualquer coisa mando a minha script 

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Boa tarde!

Esse fato está relacionado com a configuração de localidade do seu Power BI. Certamente o padrão deve está como Portuquês (Brasil).

Para evitar esse tipo de perda ao ler no power bi, eu faço um replace diretamente no código python e troco o formato de ponto para vírgula. Assim

o power bi já ler e identifica o campo como decimal , evitando de criar uma etapa de transformação e demais ajustes.

Dá uma olhada no exemplo onde converto o texto numérico em float e em seguida troco o ponto por vírgula.

 

import pandas as pd

def converte_para_float(texto_numerico):
    try:
        # Tenta converter o texto numérico para float
        numero = float(texto_numerico)
        numero_formatado =f"{numero:.2f}".replace('.',',')
        return numero_formatado
    except ValueError:
        # Se ocorrer um erro na conversão, imprime uma mensagem de erro
        print("Erro: O texto fornecido não pode ser convertido em um número float.")
        return None

# Exemplo de uso:
texto1 = "123.45"
texto2 = "987.65"
texto3 = "abc"  # Este texto não pode ser convertido em float
lista=[]

lista.append(converte_para_float(texto1))
lista.append(converte_para_float(texto2))
lista.append(converte_para_float(texto3))


dados=pd.DataFrame(lista,columns=['valor'])
dados.to_csv('saida.csv',sep=';',index=False)

Caso alguém tenha outra "luz", por favor, compartilhe conosco.

 

 

 

image.png.14bb0b6e64811dd5220df68a78c2a2c1.pngimage.png.28bf70864e44c1763f78cbc5a6b7cd88.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde, legal cara vou aplicar quando precisar, mas e quando a coluna já é do tipo float, "obs: o dados estão vindo direto do banco"

ela já esta tratando dentro do banco como float, mesmo eu so trazendo os dados com o pandas ou tipando  a coluna de novo para float, quando levo o código para o power bi ele me trás a coluna como texto, ai quando vou converte essa coluna no power bi para decimais ela me da aquele caso que comentei mais assim, conseguiria me ajudar estou a dias  tentado resolver isso 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
17 horas atrás, Lucas Gabriel Lima Bernardes disse:

Boa tarde, legal cara vou aplicar quando precisar, mas e quando a coluna já é do tipo float, "obs: o dados estão vindo direto do banco"

ela já esta tratando dentro do banco como float, mesmo eu so trazendo os dados com o pandas ou tipando  a coluna de novo para float, quando levo o código para o power bi ele me trás a coluna como texto, ai quando vou converte essa coluna no power bi para decimais ela me da aquele caso que comentei mais assim, conseguiria me ajudar estou a dias  tentado resolver isso 

TENTE CONVERTER DIRETAMENTE NO PANDAS E DEIXAR OS DADOS EM FORMATO BRASILEIRO.


 

import pandas as pd

# Exemplo de DataFrame com números em formato inglês
data = {'numeros': [1234.56, 7890.12, 3456.78]}
df = pd.DataFrame(data)

# Converter os números para formato brasileiro
df['numeros'] = df['numeros'].apply(lambda x: '{:,.2f}'.format(x).replace(',', 'X').replace('.', ',').replace('X', '.'))

print(df)


 

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...