Ir ao conteúdo

Posts recomendados

Postado

Bom dia povo.

Estou com um pequeno problema aqui no meu código, estou tentando juntar 2 tabelas e ordena-las da seguinte maneira

Planilha 1 >>>>>   Produtos / V.T / Q.P.V / V.P 

 

Planilha 2 >>>>>>>>. / Descrição "O descrição é da outra planilha e contém apenas a descrição das 3 abreviações."

 

Em produtos é o nome, os outros 3 são valores e o descrição é o significado das 3 abreviações.

O problema é que quando junto as duas DataFrame, o código fica da seguinte maneira (PRINT 1)

 

O resultado que eu queria era o da print 2 com a coluna descrição inserida e as 3 descrições em primeiro, de preferência ao lado do iphone, televisão e notebook.

 

 

Segue o código. 

#'''Bibliotecas'''

import os
import pandas as pd

#'''Banco de dados'''

lista_arquivo = os.listdir("C:\\Users\\jefferson\\Downloads\\python\\Vendas")

#'''Criando tabela em branco para importação de dados limpos'''

tabela_total = pd.DataFrame()

#'''Para #Arquivo dentro do #Lista_arquivo'''

for arquivo in lista_arquivo:

#'''Tabela total/produtos'''
    
    if "Vendas" in arquivo:
        tabela = pd.read_csv(f"C:\\Users\\jefferson\\Downloads\\python\\Vendas\\{arquivo}")
        tabela_total = pd.concat([tabela_total, tabela])
        tabela_total['Valor'] = tabela_total['Preco Unitario'] * tabela_total['Quantidade Vendida'] #Criando a tabela "VALOR" e definindo o valor apresentado
        tabela_total = tabela_total[['Produto', 'Quantidade Vendida', 'Preco Unitario', 'Descricao']]

#'''tabela descricao também'''
        
    if "Descricao" in arquivo:
        tabela1 = pd.read_csv(f"C:\\Users\\jefferson\\Downloads\\python\\Vendas\\{arquivo}")
        tabela_total1 = pd.concat([tabela_total, tabela1])
        
#'''Tabela produtos'''
        
tabela_produtos = tabela_total.groupby('Produto').sum() #agrupando todos os produtos + .sum() que é somar em inglês.
tabela_produtos['Valor Da Unidade'] = tabela_produtos['Preco Unitario'] / tabela_produtos['Quantidade Vendida'] # Dividindo valor total das vendas pela quantidad para chegar no valor unitário.
tabela_produtos = tabela_produtos[["Preco Unitario", "Quantidade Vendida", "Valor Da Unidade"]].sort_values(by="Quantidade Vendida", ascending=False) #Definindo qual irá aparecer
tabela_produtos.columns = ['V.T', 'Q.P.V', 'V.P'] #Renomear Colunas
tabela_produtos.dropna(axis = 1)
pd.set_option('display.precision', 2) # Separar casas decimais

#'''tabela descricao'''

tabela_descricao = tabela_total1[['Descricao']] #ARRUMAR UM JEITO DE PRIORIZAR A DESCRICAO AO invés DO NAN

#'''tabela_geral'''

tabela_geral = pd.concat([tabela_produtos, tabela_descricao])

#'''Display tabelas'''

display(tabela_produtos)
display(tabela_geral)
#display(tabela_descricao)
#display(tabela_total)

 

Opera Instantâneo_2022-10-01_075400_localhost.png

Opera Instantâneo_2022-10-01_075612_localhost.png

  • 3 semanas depois...
Postado

ss

 

@Jefferson Denzer olá, estou com preguiça de revisar o querido pandas então vou te ensinar uma outra forma de brincar com arquivo de texto, vê se ajuda.

 

se é um arquivo .csv isso significa que é um arquivo de texto que separa as células ou por virgula ou por ponto e virgula e termina cada linha com \n. (o Windows omite o \n então não adianta tentar ver)

O python tem funções para ler arquivos, chamadas funções de stream.

por ex, se você usar o laço for com a função open().

#printando linha a linha do meu arquivo de texto
for x in open(r"diretorio\nome.csv"):
	print(x)

 

se você quer juntar 2 linhas, tem que remover o \n das linhas no primeiro arquivo, certo?, Lembra do .replace? ele retorna uma string com a modificação que você quer, então se você fizer:

#printando linhas sem "\n"
for x in open(r"diretorio\nome.csv"):
	a = x.replace("\n","")
	print(a)

 

lembra da função zip? que te permite ler varias coisas ao mesmo tempo? se você fizer:

#juntando linhas
for x,y in zip(open(r"diretorio\nome.csv"), open(r"diretorio\nome2.csv")):
	print(x.replace("\n","")+y)

 

já viu compreensão de lista em python?

#criando lista juntando 2 linhas de cada arquivo
lista = [x.replace("\n","")+y for x,y in zip(open(r"diretorio\nome.csv"), open(r"diretorio\nome2.csv"))]

#criando string única.
tabela_string = "".join(lista)

#se quiser criar outro arquivo para por a nova tabela:
tabela_final = open(r".\nova tabela.csv","at",encoding = "utf-8")
tabela_final.write(tabela_string)

#é uma boa prática fechar o arquivo que você abriu.
tabela_final.close()

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!