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. @sirsmart é possivel sim segue abaixo o código. import os import datetime import pandas as pd # Pasta dos arquivos caminho = '/home/ec2-user/etls/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt dict_arquivos = { 'file': [], 'created_at': [] } for file in files: #Verificar se é TXT if '.txt' in file: # Obter a data de criação em timestamp e converter para Date timestamp = os.path.getmtime(f"{caminho}{file}") created_at = datetime.datetime.fromtimestamp(timestamp).date() # Alimentar o Dicionario dict_arquivos['file'].append(file) dict_arquivos['created_at'].append(created_at) # Criar o DataFrame com esses dados df_file = pd.DataFrame(dict_arquivos) # Ordernar os dados pela data de criação df_file = df_file.sort_values(by =['created_at']) Essa foi a forma que construí aqui o algoritmo, lembrando que há formas mais rápidas, mas essa foi a que consegui nesse tempo, espero que lhe ajude. Artigo consultado para obter a data de criação: Python Get File Creation and Modification DateTime Espero que seja isso que precise, caso contrario estou a disposição para ajudar.
  2. Quando é obtido todos os arquivos da pasta. Usamos o sort( ) para ordenar os arquivos se não me engano por ordem alfabética (A até Z, a até z) algo assim. Ai ao usar o FOR ele irá percorrer por cada registro na ordem dos índices do FOR ou seja na ordem que o SORT retornou (Alfabética) Essa parte aqui do código import os # Pasta dos arquivos caminho = '/home/ec2-user/etls/Testes_Wiki/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt arquivos_txt = [file for file in files if '.txt' in file] print(arquivos_txt) Se você olhar o print dessa lista (arquivos_txt) é nesta ordem que iremos ler os arquivos.
  3. Olá @sirsmart tudo bem ? Existe uma maneira simples de realizar isso dependendo do conteúdo dos arquivos. Mas basicamente você precisará realizar duas etapas Navegar pelos Arquivos Armazenar os dados dos arquivos Segue abaixo um exemplo de código import os # Pasta dos arquivos caminho = '/home/ec2-user/etls/Testes_Wiki/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt arquivos_txt = [file for file in files if '.txt' in file] # Uma string para armazenar todos os outros arquivos all_data = '' for txt in arquivos_txt: # Ler o arquivo data = open(caminho + txt, "r") # Armazenar os dados all_data += f"Arquivo: {txt} \nDados: {data.read()}. \n\n" print(all_data) Espero que seja isso que precise, caso contrario estou a disposição para ajudar.
  4. Thanael

    Expansão Botão Python

    Olá @MTL. Aparentemente por se tratar de um botão simples basta tu acessar ele via Selenium e usar o "Click" que ele irá clicar no botão é expandir a visualização normalmente. Isso para o caso de estar fazendo seu WebScrapping através Selenium, caso esteja usando o BeaultifulSoup ai não funcionara pois ele pegará o HTML estático sem poder fazer interações com o site em si. Se puder comentar sobre seu código, quais bibliotecas esta usando. Vai facilitar bastante para lhe auxiliar.
  5. Olá @sirsmart tudo bem? Consegue mandar a mensagem de erro que está recebendo ? Olhando seu código não encontrei aonde foi definido a variável data... Julgo que seria algo como data = pd.DataFrame() Se for isso quando realizar o data += resultado isso não irá funcionar... sempre que precisar por exemplo adicionar a cada iteração dados nesse DataFrame recomendo o seguinte. data = pd.DataFrame() while: .... .... data = pd.concat([data, resultado], ignore_index=True) data.to_excel("testeapi.xlsx", index=False, sheet_name='Dados') Utilize o pd.concat ao invez do +=, testa alterar e diz se deu certo seu código. Espero que isso resolva o que está tentando realizar.
  6. Thanael

    Expansão Botão Python

    Olá @MTL tudo bem ? Recentemente precisei fazer um scrapping num site assim, essas parte de expandir consistia num <select> verifica no HTML se esse botão está dentro de algum select, caso for basta pesquisar como navegar pelos SELECT com o Selenium. Caso esteja usando o Selenium, ele tem uma documentação bem robusta que pode te auxiliar. Exemplo: Trabalhando com elementos select Segue abaixo outros links que podem lhe ajudar How to click an Expand button to open a section using Selenium Webdriver C# Espero que isso lhe ajude, caso contrário estou a disposição (Se puder enviar um print do HTML mostrando o código HTML e um mostrando a interface do Botão pode ser que ajude também)
  7. Thanael

    Normalizar Json

    Boa tarde @sirsmart. Isso ocorre pelo motivo da coluna project ser uma coluna do tipo OBJECT (JSON) ou seja ela armazena mais registros, por conta disso irá armazenar desta forma mesmo no Excel. Para resolver isso precisará "Desmontar" todas essas colunas que armazenam jsons, o ideal é ir utilizando o pandas.json_normalize até não ter mais registros desta forma em seus dataframe.
  8. Thanael

    Pegar coluna do JSON

    Pela imagem, essa coluna está trazendo a lista de registros, uma forma de tratar ela é transformando a lista em um novo DataFrame (haha) Segue abaixo uma ideia de código. df_principal = pd.DataFrame() for index, row in df.iterrows(): # Criar o DataFrame desta lista df_row = pd.DataFrame(row['statusHistory']) # Adicionar as colunas do DF principal a este novo df_row['id'] = row['id'] # Juntar ao DF principal df_principal = pd.concat([df_principal, df_row], ignore_index=True) Em resumo a lógica e percorrer pelo DF principal, criar um novo DataFrame do statusHistory de cada linha e juntar tudo isso num dataframe. Espero que isso lhe auxilie de alguma forma.
  9. Thanael

    Pegar coluna do JSON

    Poderia me dar um exemplo desta coluna "statusHistory" ? Pois para funcionar ali ela precisará ser um OBJECT (JSON). Aparentemente a coluna statusHistory é uma coluna STR portanto a forma de trazer isso é diferente. (Pode usar varias alternativas dependendo da estrutura da coluna)
  10. Thanael

    Pegar coluna do JSON

    Ótimo, segue abaixo algumas formas de acessar os dados dela. pd.json_normalize Pode usar mais um pd.json_normalize para obter os dados dela e transformar em outro dataframe. Criar as colunas através do Apply Criar as colunas de dentro deste "project" via apply.Exemplo df['project_name'] = df['project'].apply(lambda row: row['name']) df['project_category'] = df['project'].apply(lambda row: row['category']['name']) Tenta realizar esse exemplo do apply que mandei, provavelmente ele resolva seu problema. OBS: Pode ser necessário adicionar umas tratativas (ifs) caso existam dados nulos por exemplo. Ai basta usar IF ternário caso necessário.
  11. Thanael

    Pegar coluna do JSON

    Bom dia @sirsmart tudo bem ? Pelo que estou observando na sua estrutura você transformou o arquivo todo em um DataFrame... Sabendo que o campo issues possui dentro dele os dados você não conseguirá acessa-los facilmente como pretende atravês deste DataFrame principal. Solução Criar o DataFrame direto com os dados de issues A maneira mais prática de trabalhar com os esses dados e criar o DataFrame somente com os dados do issues, exemplo Converter o JSON em DICT atravês da lib json e criar o dataframe direto dos dados de issues df = pd.DataFrame(json_dict['issues']) Usar o pd.json_normalize para criar o DataFrame com os dados do issues df_inicial = pd.read_json('arquivo.json') df = pd.json_normalize(df_inicial['issues']) Sugiro testar uma das duas alternativas e dizer se funcionou. Caso contrario estou a disposição para lhe auxiliar.
  12. Olá @bobneo4 tudo bem ? Vamos lá, em relação a esses passos iniciais (1,2,3) não tenho muito conhecimento se é possível realizar isso com Python. Já realizei automações de navegar automaticamente pelo site e etc, porém identificar as ações de um usuário em um determinado site, pode ser bem mais complexo. Vou deixar abaixo algumas alternativas para realizar isso Desenvolvedor do Site Caso você seja o desenvolvedor do site, você conseguirá realizar essas ações de identificar as ações do usuário. Webhooks Muitos serviços online atualmente fornecem o envio de informações via WebHook, no qual quando um usuário realizar determinada ação o site vai enviar os dados da ação para uma URL definida (Geralmente você precisará levantar uma API para receber esses dados) Em relação a levar as informações para uma planilha (Google Sheets) isso você consegue realizar tranquilamente via Python e existe muito conteúdo na internet para auxiliar nisso. Espero que isso possa lhe auxiliar de alguma forma, caso contrário estou a disposição para ajudar no que for possível.
  13. Bom dia @Gustavo Kasprowicz tudo bem ? Que estranho isso 🤔, acabei de rodar a instalação e o import aqui é foi normal... Aparentemente esse seu problema ai ocorre devido a você não ter permissão para instalar as bibliotecas. Segue abaixo um artigo onde uma pessoa teve o mesmo problema How to resolve "normal site-packages is not writable" in Python e/ou pip/python: normal site-packages is not writeable Algumas soluções Criar ambientes virtuais (virtualenv) Caso você use linux pode estar tentando "forçar" a instalação através do comando. sudo apt install python-package-name # for apt package manager Especificar o usuario na instalação através do pip install package-name --user Creio que a solução mais adequada seja usar o seguinte comando no CMD na hora de instalar. python3 -m pip install [package_name] #ou python -m pip install [package_name] # Exemplo python -m pip install xmltodict Sugiro testar e após isso comentar aqui se funcionou, caso não funcione procuramos outra solução.
  14. Olá @Endel Naiva tudo bem ? Recentemente realizei alguns estudos testando o Selenium e tive um problema bem semelhante, por conta de não ter instalado o WebDriver do Chrome na máquina... Porém existe uma maneira simples de contar isso via código. Segue abaixo a forma com a qual eu configuro o Selenium nos meus scripts, sugiro testar ela e ver se deu certo. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select from selenium.webdriver import ActionChains import pandas as pd options = Options() options.add_experimental_option("detach", True) # Aqui ele instala o WebDriver toda vez driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()), options = options) # A partir daqui usar normal como preferir driver.get('https://statusinvest.com.br/acoes/smto3') time.sleep(2) Sugiro testar com esse código, caso mesmo assim não funcione, peço que me envie as mensagens de erro para podermos lhe auxiliar novamente.
  15. Olá @maxvitola tudo bem? Possivelmente isso pode estar ocorrendo devido a sua versão do Python, poderia comentar aqui qual versão está utilizando (Basta rodar python --version no CMD) Pesquisando sobre este seu problema me deparei com este artigo. Could not find a version that satisfies the requirement tensorflow (StackOverflow) Em resumo no caso da pessoa ali ela tinha o Python 3.6 e o TensorFlow não suportava essa versão... Possíveis Soluções. Atualize seu Python (Tutorial de como realizar isso) Utilizar outro caminho para obter a biblioteca. No caso do problema ali foi instalado a biblioteca via comando. pip install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.8.0-py3-none-any.whl Espero que isso solucione seu problema caso contrario estou a disposição para lhe auxiliar.
  16. Olá @lhnask tudo bem ? Nunca utilizei essas bibliotecas mas pelo erro que comentou de "FileNotFoundError: [WinError 2] " significa que a biblioteca de transcrição não está achando o arquivo. Segue abaixo o que pode estar acontecendo. No momento de passar o caminho do arquivo sugiro passar o caminho completo sempre. Exemplo # ao invez de usar arquivo.wav use file = r"C:\Users\thanael.butewicz\Documents\arquivo.wav" #ou file = "C:\\Users\\thanael.butewicz\\Documents\\arquivo.wav" Sugiro sempre usar o caminho completo, sanou muitos problemas que tive semelhante a isso. Tenta realizar o teste ai comenta se deu certo ou se esse continuou para buscarmos outra possível solução.
  17. Saquei, para colocar os 3 arquivos JSONs no mesmo DataFrame o ideal é que exista uma relação entre eles, seja por meio de algum ID, data ou outro dado. Consegue mandar um exemplo da estrutura deles para termos uma noção, ou melhor ainda mandar 3 arquivos JSOns similares a esses (Pode ocultar os dados se preferir) Tendo conhecimento da estrutura dos arquivos fica mais fácil visualizar a relação e criar o DataFrame todo junto por meio de um pd.join ou até mesmo usando o pd.melt.
  18. Olá @Dev c4puz tudo bem? Se puder me explicar onde exatamente esta com dificuldade vai facilitar para que eu possa lhe auxiliar. Com base nisso em qual ponto está com dificuldade ? Realizar o download das imagens do Instagram ? Criar a interface via Tkinter ? Caso o código esteja gerando erro também fique a vontade para colocar as mensagens de erro que apresentam, tendo essas informações vou conseguir lhe auxiliar de forma mais assertiva. 👍
  19. Olá @sirsmart tudo bem ? Poderia explicar um pouco mais a fundo como precisa desses arquivos no excel ? Lembrando que você precisará primeiro ler esses arquivos JSON, recomendo utilizar o Pandas para isso. (pd.read_json) Segue abaixo algumas dúvidas que tenho para conseguir lhe auxiliar melhor. Sobre os arquivos JSON, deseja que cada um deles fique em uma aba da planilha excel ? Caso seja isso segue abaixo um tópico explicando como resolver isso. Salvar DataFrame em abas no arquivo Excel. Salvar os arquivos JSON na mesma ABA ? Ai na teoria você precisará juntar todos os arquivos JSON em um mesmo DataFrame. Lembrando que pode ter o dificultador de precisar de uma ligação entre eles. Com essas informações vou conseguir lhe auxiliar mais assertivamente.
  20. Olá @artr não entendi muito bem sua pergunta. Atualmente é possível utilizar vários serviços de IA através de APIs, neste quesito o Python trabalha muito bem com APIs e consegue utilizar tranquilamente esses serviços. Agora em relação a criação de IA é uma tarefa bem mais complexa além de existir vários tipos de IA.
  21. Olá @Milton tudo bem ? Não consegui entender muito bem sua dúvida, poderia me explicar qual o erro ou a situação ? Pelo que aparenta você não está conseguindo ler os dados do arquivo excel da forma correta é isso ? Caso seja isso sugiro que façamos o seguinte. Envie uma imagem contendo a estrutura dos dados do Excel (Pode deixar os valores riscados no print) Provavelmente será necessário somente ajustar a forma que lemos esse arquivo no excel adicionando algum parâmetro a mais na função pd.read_excel( ) como por exemplo nome da Aba, intervalo de celular entre outros possíveis parametros. (Perceba que seu DataFrame está vindo dentro de um dicionario na key Planilha1, testa selecionar ele assim df['Planilha1'] que provavelmente funcionará na estrutura correta.) Vou deixar abaixo a documentação do pd.read_excel( ) sugiro verificar os possíveis parâmetros que podem ser passados. De certa forma estou a disposição para auxiliar no que for preciso.
  22. Bom dia @Davi L., tudo bem? Segue abaixo um exemplo de como realizar essa manipulação de dados. Formatar a data pro formato Brasileiro (dia/mes/ano) import datetime df['data'] = df['data'].apply(lambda data: data.strftime('%d/%m/%Y')) OBS: Lembrando que o campo de data precisa ser uma data (datetime) e após essa alteração ele se tornará String... Valor monetário em Real Não entendi muito bem o que pretende fazer, mas segue abaixo um exemplo de como transformar esse valor em uma string na forma de real R$ xxxx,xx df['valor'] = df['valor'].apply(lambda real: f'R$ {real:.2f}'.replace('.', ',')) Ao final teremos o DataFrame com essas colunas da seguinte forma. Lembrando que ao realizar essas alterações as colunas se transformam em String, portanto não funcionarão mais como coluna de data ou de número. Espero que seja isso que esteja precisando caso contrario estou a disposição para auxiliar no que for preciso. 👍
  23. Olá @mental_katsu tudo bem? Na ultima vez que usei o pyautogui tive o mesmo problema, não encontrei o motivo de não ter funcionado, sugiro verificar a documentação. Lembro que na época eu usei o hold( ) como alternativa 😅. Algo semelhante ao exemplo abaixo. #Usando Hold with pyautogui.hold('ctrl'): pyautogui.press(['alt', 't']) # Usando keydown e KeyUp pyautogui.keyDown('ctrl') pyautogui.keyDown('alt') pyautogui.keyDown('t') pyautogui.keyUp('t') pyautogui.keyUp('alt') pyautogui.keyUp('ctrl') Sugiro ir testando essas outras alternativas que realizam a mesma função. Espero que isso lhe ajude caso contrario estou a disposição para ajudar. 👍
  24. Olá @Douglas Michel Reis tudo bem? Quando eu preciso realizar essas atividades geralmente utilizo a biblioteca Pandas para consultar, manipular e inserir dados nos respectivos banco de dados. Na teoria isso que está tentando fazer não deveria demorar, vou lhe mandar uma estrutura de código para realizar isso ai você testa. from sqlalchemy import create_engine # Criar a conexão com o PostgreSQL import pyodbc import pandas as pd # Criar as conexões com os bancos conexao_postgres = create_engine('postgresql://{user}:{password}@{host}:{port}/{db}'.format( user='xxx', password='xxx', host='xxx', port='xxx', db='xxx', )) conexao_sql_server = pyodbc.connect( # Driver que será utilizado na conexão 'DRIVER={ODBC Driver 17 for SQL Server};' # IP ou nome do servidor. 'SERVER=192.168.100.178\SQLEXPRESS;' 'PORT=1433;' # Banco que será utilizado. 'DATABASE=PythonMSSQL;' 'UID=xxx;' 'PWD=xxx') # Escrever o SQL select = ''' select * from tabela ''' # Inserir no SQL SERVER df = pd.read_sql(select, conexao_postgres) df.to_sql('nome_da_tabela',conexao_sql_server, if_exists = 'replace', index = False) Vou deixar também alguns links úteis que possam lhe ajudar. pd.read_sql: Obter os dados do Banco de dados pd.to_sql: Inserir o DataFrame em um Banco de dados Espero que isso possa lhe auxiliar, basicamente só precisa criar as conexões com os bancos e obter e inserir os dados através do Pandas (Biblioteca). Estou a disposição para lhe ajudar no que precisar.
  25. Antes de iniciarmos a consultar os metadados do PostgreSQL através do SQL, vamos entender de fato o que são esses metadados Metadados Vou deixar aqui a definição que o site WikiBooks traz sobre o tema. "Metadados são dados sobre dados. Uma consulta normal retorna informações existentes em tabelas, já uma consulta sobre os metadados retorna informações sobre os bancos, os objetos dos bancos, os campos de tabelas, seus tipos de dados, seus atributos, suas constraints, etc" Creio que essa definição por si só já explica o suficiente para entendermos sobre metadados, mas ... "Blza Thanael. Entendi o que são Metadados, porém como isso pode me ajudar ?" Por que usar os metadados Vou explicar alguns casos onde essas informações podem ser uteis. Automatizar documentações: Podemos obter informações sobre as estruturas das tabelas, por exemplo obter as colunas, tipo de dados, constraints etc. Com isso pode criar um HTML dinâmico para criar documentações dessas tabelas. Criar Dashboards sobre a estrutura do seu banco de dados: Podemos obter informações importantes como, quantidade de tabelas, tamanho das tabelas entre outras informações. As possibilidades do que podemos fazer são varias, vai depender da sua criatividade e de quais perguntas esteja tentando responder. Como visualizar os Metadados Dentro do PostgreSQL existem determinadas tabelas que realizam o armazenamento dessas informações, tabelas por exemplo que começam com pg_catalog.alguma_coisa Exemplo : (pg_catalog.pg_namespace, pg_catalog.pg_namespace, pg_catalog.pg_tables) Exemplo de como visualizar todas as tabelas de um Schema select * from pg_catalog.pg_tables pt where schemaname = 'public' Exemplo de como verificar o tamanho das tabelas select pt.schemaname, pt.tablename, pg_size_pretty(pg_relation_size(pg_catalog.pg_class.oid)) AS table_size from pg_catalog.pg_tables pt left join pg_catalog.pg_class on pg_catalog.pg_class.relname = pt.tablename where schemaname = 'public' order by 3 desc Considerações O objetivo aqui é apresenta-los aos metadados para que saibam que eles existem e a partir disso usarem sua criatividade para descobrir que tipo de perguntas podem responder com eles. Já conhece sobre Metadados ? Sinta-se a vontade para deixar nos comentários casos de uso onde usou metadados do PostgreSQL ou outra aplicação.
×
×
  • Create New...