Jump to content

Thanael

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    217
  • Ingressou

  • Última visita

  • Dias Ganhos

    28

Tudo que foi postado por Thanael

  1. Olá @jefferson.silva tudo bem? Pelo que entendi seu problema é o fato do programa não imprimir os arquivos na ordem correta, portanto seria interessante você rodar um print(os.listdir(path)) para entender como está sendo lido os arquivos da pasta, para entender a ordenação deles. (Se é ordem alfábetica ou outra forma) Uma opção para resolver isso seria usar um sort( ) para ordenar a lista de arquivos.
  2. Será que é possivel adicionarmos Imagem como fundo de um gráfico através do Python ? Durante esse post vou lhe mostrar que é possivel sim e como realizar. Mas antes disso muitos devem estar se perguntando "Por que eu faria isso ? Não vejo muita utilidade ... " Utilidades Algumas utilidades simples para isso seriam. Marca d'agua de sua empresa: Pode adicionar a logo de sua empresa nos gráficos de seus relatórios. Facilitar no entendimento: Existem gráficos que ao adicionar imagem de fundo se torna mais fácil de realizar a leitura do mesmo e entende-lo. Exemplo - Matriz BCG (Link) Aprimorar suas visualizações: A adição de imagens ao seu gráfico podem lhe abrir um leque de possibilidades para melhorar suas visualizações. Desenvolvimento Existem várias Bibliotecas que realizam isso, porém neste post vou mostrar como realizar isso através do Plotly, portanto vamos parar de enrolação e mostrar o código. Importação das bibliotecas e criação do nosso DataFrame import plotly.express as px #pip install plotly from plotly.subplots import make_subplots import matplotlib.pyplot as plt #pip install matplotlib import base64 import pandas as pd # pip install pandas # Criar os dados que usaremos neste exemplo df = pd.DataFrame({ 'produto':['A','B','C','D','E','F','G','H'], 'crescimento do mercado':[0.7,0.5,0.1,0.2,0.5,0.9,0.4,0.1], 'participação no mercado':[0.9,0.1,0.8,0.4,0.7,0.4,0.3,0.2] }) Criar o Gráfico de Dispersão (Scatter Plot) fig = px.scatter(df , x = 'participação no mercado', y = 'crescimento do mercado', text="produto", width = 900, height = 600, title= 'Matriz BCG' ) # Aumentar o Tamanho das marcações fig.update_traces(marker_size=14,textposition='top center') fig.update_xaxes(range=[1,0], row=1, col=1) fig.update_yaxes(range=[0,1], row=1, col=1) Adicionar a Imagem de Fundo - Documentação da biblioteca. # Realizar a leitura da imagem bcg_file = 'bcg.png' # Caminho da Imagem bcg = base64.b64encode(open(bcg_file, 'rb').read()) fig.update_layout( # Adicionar a Imagem como Background do Gráfico images = [ dict( source='data:image/png;base64,{}'.format(bcg.decode()), xref="paper", yref="paper", x=0, y=1, #position of the upper left corner of the image in subplot 1,1 sizex=1, sizey=1, #sizex, sizey are set by trial and error xanchor="left", yanchor="top", sizing="stretch", layer="below", opacity=0.6, )] ) fig.show() Resultado Final. Importância de melhorar a visualização Abaixo vou lhe mostrar um comparativo entre dois gráficos cujo objetivo é mostrar uma espécie de Matriz BCG; Sem melhorias na visualização Com Melhorias simples na Visualização Melhorar a visualização faz toda a diferença! Espero que esse conteúdo lhe ajude, também sinta-se a vontade para colaborar comentando dicas de melhorias de visualizações que você utiliza em seus gráficos.
  3. Thanael

    Problema com Python/Kivy

    Olá @rvmhot tudo bem? Consegue mandar um print do erro e se possível trechos de seu código ? Com essas informações conseguiremos lhe ajudar de forma mais assertiva... 👍
  4. Olá @Milton tudo bem? Pelo que entendi seu código não está gerando erro... Simplesmente não está abrindo as telas como deveria correto ? Não entendo muito das bibliotecas que está utilizando mas vou tentar lhe ajudar mesmo assim. Como a Tela 1 abre normalmente porém a Tela 2 não está conseguindo abrir, recomendo verificar a chamada das funções para entender se a ação que abre a Tela 2 está sendo executada normalmente. Um jeito simples de ir realizando isso é ir adicionando print( ) dentro das funções, pois ai você sabe se a mesma está sendo executada. Caso esteja sendo executada normalmente é sinal de que a ação esta sendo executada mas por algum motivo a função não consegue abrir essa Tela 2 Caso não esteja sendo executada basta rever o código para entender em qual momento ela deveria ser executada e corrigi-la. Enfim, espero que isso possa lhe auxiliar de alguma forma, caso contrario fico a disposição para tentar lhe ajudar.
  5. Então, ai já não sei haha 😅 (Terá de pesquisar) Sei que arquivos PDF tem como mexer via Python (Converte em String e tals) porém meu medo nessas conversões e que quando voltarmos ao arquivo EPS ele pode ter perdido alguma formatação e não funcionar. Porém recomendo pesquisar se existe biblioteca de manipulação de arquivo EPS ou então qual formato de arquivo consigamos manipular através do Python.
  6. A manipulação de nomes de arquivos é tranquilo. Porém pelo que entendi você necessita alterar algo que está dentro do arquivo EPS. Sendo assim precisamos procurar um meio de acessar os dados que estão neste arquivo EPS e é neste ponto que está nossa dificuldade... Precisa procurar uma forma de abrir o arquivo EPS dentro do python ou converter para outro formato que consigamos acessar os dados do arquivo.
  7. Olá @Ancleiwer Menezes. Gostei do que está tentando fazer, me parece muito interessante, nunca tentei manipular arquivo EPS através do Python. Além disso não sei se seria possivel realizar essa manipulação da camada de texto de dentro do arquivo EPS. Chegou a pesquisar se é possivel realizar isso ? Creio que teria de ter alguma biblioteca especifica para conseguir abrir o arquivo EPS...
  8. Olá @cmoreti tudo bem? Não conheço muito sobre esse processo de barra de progresso. Mas vou dar uma visão aqui que talvez possa lhe ajudar. Pelo que entendi olhando brevemente seu código, e essa parte encarregada de realizar a atualização da barra de progresso correto ? for line in process.stdout: output = line.decode("utf-8").strip() if "Receiving objects" in output: percentage = int(output.split()[0]) pbar.update(percentage - pbar.n) O que eu recomendo é verificar essa lógica. Coloca alguns prints para ter uma noção da execução desta parte, para ver se de fato está sendo executado e se está passando por todas as "etapas" que você precisa. A partir dai podemos ter uma noção se de fato o código está passando por todas as partes que deveria corretamente. Peço que realize esses testes e comenta se deu certo ou não, com base nisso posso procurar outra forma de lhe ajudar caso necessário. 👍
  9. Olá @Douglas Vieira tudo bem? Entendi, para conseguir lhe ajudar da melhor forma possível vou precisar de mais algumas informações, principalmente relacionado a estrutura dos dados (DataFrame). Seria possível você enviar um print do seu DataFrame, caso necessário pode ocultar os valores no print ou deixar valores fictícios. Ai conseguirei lhe auxiliar melhor. Vou deixar aqui abaixo um exemplo de como obter a média móvel da maneira que tu deseja em um DataFrame. Segue abaixo uma imagem do DataFrame de teste que criei aqui. Segue abaixo o código para obter a média móvel dos últimos 6 meses para essa coluna "Valor". import pandas as pd import random import datetime from dateutil.relativedelta import relativedelta def calcular_media_movel(df, data): # Diminuir 180 dias da data passada no parametro data_menos_180_dias = data - relativedelta(days = 180) # Filtrar para obter os dados dos últimos 6 meses baseados na data do paramêtro. df_filtrado_6_meses = df[(df['data']>= data_menos_180_dias) & (df['data'] <= data)] # Obter a media do valor media_6_meses = df_filtrado_6_meses['valor'].mean() # Retornar a média arrendodada return round(media_6_meses,2) # Agora basta aplicarmos essa função a cada linha do dosso DataFrame df['media_movel'] = df['data'].apply(lambda data: calcular_media_movel(df,data)) print(df) Espero que isso lhe auxilie de alguma forma, caso contrário estou a disposição para ajudar no que for preciso.
  10. Olá @yuripossa tudo bem? Então... consegue me dizer qual o erro que está acontecendo ? Se possivel mandar o print ou a mensagem de erro aqui vai facilitar para que consigamos lhe auxiliar.
  11. Olá @sirsmart você comentou que não está conseguindo. Mas qual o erro que está acontecendo, preciso que me mande a mensagem de erro que ai torna-se mais fácil para eu lhe auxiliar.... Vou deixar alguns artigos que talvez possam lhe ajudar, recomendo olhar eles e tentar realizar o que eles propoem. [VÍDEO] - Integração entre Python e Excel usando Pandas e o Openpyxl [ARTIGO] - CRIAR E ESCREVER EM ARQUIVO EXCEL USANDO O MÓDULO XLSXWRITER [ARTIGO] - Como Manipular Planilhas Excel com o Python
  12. Thanael

    Calcular Data/Hora

    Olá @sirsmart tudo bem? Vou deixar o link para um post que fiz aqui no forum ensinando como obter a diferença entre datas pelo Python. Utilidades Python - Obter a diferença entre duas datas Caso mesmo assim não tenha conseguido realizar, me avisa que ai procuro outra maneira de lhe ajudar de forma mais ativa. Obs: Caso tenha curiosidade também vou deixar o link para um post de como realizar calculos com datas. Como fazer cálculos com datas de forma simples Espero que ao ler o Post consiga realizar o que necessitas. 👍
  13. Olá @sirsmart tudo bem ? Recomendo utilizar o .items( ) no momento de percorrer o dicionário. Segue abaixo um exemplo, espero que seja o que esteja buscando. dicionario = { 0 : {'checking_status' : '<0','duration':6}, 1 : {'checking_status' : '0<=X<200','duration':23}, } for key_a, value_a in dicionario.items(): print(f'Acessando o Index: {key_a}\n') # Navegar pelo dicionario armazenado dentro do Index for key, value in value_a.items(): print(f'Key: {key}, value:{value}') print(f'Terminou de acessar o Index: {key_a}\n\n') Caso mesmo assim precisa de outra coisa, sugiro dizer na "teoria" o que está tentando fazer, que ai eu consigo ser mais assertivo. Exemplo "Estou tentando percorrer por esses valores e realizar tal conta com os valores, ou estou tentando percorrrer pelos dados para obter os valores de cada um deles e realizar x ação" 👍
  14. Olá @Mateus Monteiro de Oliveira tudo bem? O erro de Sintaxe se encontra no seu "if" pois o mesmo está escrito com letra grande, portanto isto resulta no erro de Sintaxe. Basta ajustar de If para if que o código irá funcionar corretamente. nome = str(input('Qual é o seu nome?')) if nome == 'Métius': print('Que nome lindo você tem') print('Bom dia {}!'.format(nome)) Espero que isso resolva sua dúvida, caso contrário estou a disposição. 👍
  15. Olá @Mateus Monteiro de Oliveira tudo bem? Consegue me mandar qual a mensagem de erro que está aparecendo, somente com o código não consigo lhe ajudar 😅
  16. Thanael

    Dicionário em Python

    Show. Basta realizar o seguinte. for index, item in dados.iterrows(): dicionario = {'Ação':item['Ação'], 'Valor': item['Valor Ação']} print(dicionario) Com isso você terá o que exatamente o quer. 👍
  17. Thanael

    Dicionário em Python

    Olá @sirsmart. Creio que tem sim forma mais simples, a partir da sua variável dados que é um DataFrame tem como obter esse dicionário haha. Eu gosto de percorrer pelos dados utilizando o iterrows( ), onde você pode por exemplo realizar o seguinte. for index, item in dados.iterrows(): #print(item['coluna']) print(item['Ação']) print(item['Valor']) print(item['Quantidade']) Ou seja o item consiste em um dicionário da linha. Eu gosto muito de usar isso quando preciso percorrer pelos items do meu DataFrame e realizar determinadas ações. Vou deixar abaixo um exemplo de código que pode lhe auxiliar a entender como usa-lo. import pandas as pd dados = {'Ação':['a','b','c','d'],'Valor':[1,2,3,4]} df = pd.DataFrame(dados) for index, item in df.iterrows(): print(f'Index: {index}\nValor: {dict(item)}\n\n') Caso seja mais fácil sugiro enviar esse excel que está utilizando que ai consigo auxiliar de forma mais assertiva visto que terei a estrutura de dados que você está usando. Enfim, espero que isso lhe ajude, caso contrário estou a disposição para lhe auxiliar no que for preciso. 👍
  18. Thanael

    Dicionário em Python

    Olá @sirsmart tudo bem? Pode me enviar alguns registros dessa lista, para eu entender melhor a estrutura. Por exemplo se está da seguinte forma: [ ['Ação','Valor investido','Valor Ação','Qtde Ações' ,' Valor pago ano', ' Valor pago mês'], ['XXX3', 170, 233, 5 ...... ] ] Que ai com base nisso vou conseguir lhe auxiliar de forma mais assertiva. 👍 Obs: Essa informação que tu tem está em formato de DataFrame, ou Lista mesmo ?
  19. Olá @marcos costa tudo bem? Uma maneira que acredito ser mais simples para realizar o que deseja é utilizando python. Para levar os dados do excel para um banco de dados é bem simples e existe diversos conteúdos na web, vou lhe mandar um artigo sobre isso. Abrindo arquivos Excel em Python Basicamente basta usar o método pd.read_excel do pandas para obter os dados e pd.to_sql para inserir os dados em um banco de dados. Nessa parte do HTML não possuo tanto conhecimento, portanto não vou conseguir lhe auxiliar de maneira adequada, mas logo aparece alguém aqui que vai conseguir lhe auxiliar melhor.
  20. Olá @Eduardo Trabulsi tudo bem? Então... não estou conseguindo visualizar muito bem a imagem que mandou, mas pelo que entendi você quer comparar as colunas g2m_UC (Banco 1) com a coluna Oper_uc (Banco 2) correto? Quando tu diz comparar o que exatamente deseja ver ? Número de registros ? diferença de valores numéricos ? Se puder me especificar um pouco mais sobre seu problema, posso lhe auxiliar de maneira mais assertiva 👍
  21. Olá @Luiz Carlos de Freitas Neto tudo bem? Acredito que seu código não esteja entrando nas condições (IF) como deveria, a sugestão que lhe dou para lhe auxiliar a identificar os erros é adicionar prints nos IFS, por exemplo, dentro do IF adicionar um print('entrou na condição X') Pode parecer meio bobo, mas isso ajuda bastante para entender como esta a execução do seu código, identificando se está entrando nos IFs como deveria ou não. Testa realizar isso e me diz se ajudou, caso contrario tentamos procurar outra alternativa. 👍
  22. Olá @Jeferson Goncalves tudo bem? Basta utilizarmos a estrutura de condição IF, segue abaixo um exemplo inicio = input('Você deseja armazenar alguma informação? (s/n)\n') if inicio == 's': print('Ok, vamos armazenar as informação') elif inicio == 'n': print('Não iremos armazenar') else: print('Digite um comando válido (s/n)') Vou deixar abaixo um link para o W3 Schools explicando como utilizar o IF: Python Conditions Espero que isso lhe ajude, caso contrario estou a disposição.
  23. Opa segue abaixo o código que necessita e o resultado. import pandas as pd import re from bs4 import BeautifulSoup import os def get_dados_anbima(xml): df_registro = pd.DataFrame() header = xml.find('header') # Percorrer pelos tipos obtendo os dados for titprivado in xml.find_all('titprivado'): registro = { 'cnpjcpf' : header.cnpjcpf.getText(), 'codcart' : header.codcart.getText(), 'cod_ativo' : titprivado.codativo.getText() if titprivado.codativo else None, 'nom_ativo' : titprivado.isin.getText() if titprivado.isin else None, 'valor_ativo' : titprivado.valorfinddisp.getText() if titprivado.valorfinddisp else None, 'tipo_ativo': 'titprivado' } # Adiciconar o registro ao DataFrame criado df_registro = df_registro.append(pd.DataFrame([registro])) # Percorrer pelos tipos obtendo os dados for termorv in xml.find_all('termorv'): registro = { 'cnpjcpf' : header.cnpjcpf.getText(), 'codcart' : header.codcart.getText(), 'cod_ativo' : termorv.codativ.getText() if termorv.codativ else None, 'nom_ativo' : termorv.isin.getText() if termorv.isin else None, 'valor_ativo' : termorv.valorfinanceiro .getText() if termorv.valorfinanceiro else None, 'tipo_ativo': 'termorv' } # Adiciconar o registro ao DataFrame criado df_registro = df_registro.append(pd.DataFrame([registro])) return df_registro # INICIO DO CODIGO DE FATO # Caminho da pasta - Passar o diretorio dos XMLs path = r'C:\Users\thanael.butewicz\Documents' df = pd.DataFrame() # Percorrer somente pelos arquivos .xml for file in os.listdir(path): if re.search('xml', file): # Leitura do arquivo with open(file, 'r') as f: data = f.read() # Criar a variavel xml que contém o texto do arquivo xml xml = BeautifulSoup(data.replace('',''), "xml") # Chama a função criada e obtem os dados do arquivo. df = df.append(get_dados_anbima(xml)) print(f'Arquivo: {file} - OK') df = df.reset_index(drop = True) Enfim espero que seja isso que precise, caso contrário estou a disposição ou pode me chamar no discord Thanael#0530 que posso separar um momento e lhe explicar o funcionamento do código e lhe ajudar diretamente compartilhando a tela ou conversando mesmo.
  24. Olá @Jose Eugenio Ramos tudo bem ? Teria como mandar um exemplo da estrutura do PDF ? pois somente com essas informações eu não consigo pensar em uma forma mais assertiva de lhe ajudar. Se possível mandar um exemplo do PDF ou até mesmo um print do que está acontecendo.
  25. Olá @afprospero tudo bem ? Segue abaixo um script contendo o que precisa. OBS: Estou usando a biblioteca BeautifulSoup para leitura dos dados do XML, é muito usada para WebScraping (raspagem de dados de sites) 1° Passo: Importas as biblitoecas import pandas as pd import re from bs4 import BeautifulSoup import os 2° Passo: Criar uma função para extrair os dados. def get_dados_anbima(xml): df_registro = pd.DataFrame() header = xml.find('HEADER') for tipo in ['TITPRIVADO','ACOES']: # Percorrer pelos tipos obtendo os dados for dados_tipo in xml.find_all(tipo): registro = { 'nome_cli' : header.NOME.getText(), 'idade_cli' : header.IDADE.getText(), 'nom_ativo' : dados_tipo.NOME.getText(), 'cod_ativo' : dados_tipo.CODIGO.getText() , 'valor_ativo' : dados_tipo.VALOR.getText(), 'tipo_ativo' : tipo } # Adiciconar o registro ao DataFrame criado df_registro = df_registro.append(pd.DataFrame([registro])) return df_registro 3° Passo: Criar o LOOP para passar pelos arquivos e chamar a função # Caminho da pasta # Passar o diretorio dos XMLs path = r'C:\Users\zThan\OneDrive\Documentos' df = pd.DataFrame() # Percorrer somente pelos arquivos .xml for file in os.listdir(path): if re.search('xml', file): # Leitura do arquivo with open(file, 'r') as f: data = f.read() # Criar a variavel xml que contém o texto do arquivo xml xml = BeautifulSoup(data, "xml") # Chama a função criada e obtem os dados do arquivo. df = df.append(get_dados_anbima(xml)) print(f'Arquivo: {file} - OK') df = df.reset_index(drop = True) Segue abaixo um print do resultado, com base nos 2 arquivos que você deixou na descrição. Obs: Durante a execução do script ele printa alguns alertas, mas pode ignora-los, são só avisos de que a biblioteca vai mudar no futuro. Espero que seja isso que esteja procurando, caso contrario estou a disposição para lhe ajudar. 👍
×
×
  • Create New...