1
resposta

ler varios arquivos

Boa noite.

Tenho uma duvida, por exemplo eu tenho N arquivos em txt salvo em uma mesma pasta: teste 1.txt teste 2.txt teste 3.txt teste 10.txt

E cada arquivo tenho valores parecidos com isto, os mesmo equivalem a temperatura:

7,729943E+1 7,967143E+1 7,356177E+1 7,183434E+1 7,729943E+1 7,967143E+1 7,356177E+1 7,183434E+1 7,729943E+1 7,967143E+1 7,356177E+1 7,183434E+1 7,731912E+1 7,967430E+1 7,356356E+1 7,183864E+1 7,731912E+1 7,967430E+1 7,356356E+1 7,183864E+1 7,731912E+1 7,967430E+1 7,356356E+1 7,183864E+1 7,732091E+1 7,967573E+1 7,356284E+1 7,184007E+1 7,732091E+1 7,967573E+1 7,356284E+1 7,184007E+1 7,732091E+1 7,967573E+1 7,356284E+1 7,184007E+1

Como consigo ler vários arquivos lendo somente o inicio "teste*.txt" de só uma vez e gerar um gráfico de linhas individualmente para cada arquivo.

ja utlizei o metodo glob, consigo buscar os arquivos mas não abri-los.

1 resposta

Olá Eduardo, tudo bem? Espero que sim!

Vou deixar aqui uma solução simples.

Primeiro, importe as bibliotecas necessárias:

import pandas as pd
import seaborn as sns
import matplotilib.pyplot as plt

Como você disse que os arquivos têm sempre o mesmo nome, dentro da mesma pasta, diferindo apenas de um número ao final, resolvi fazer da seguinte forma:

  • Primeiro escrevi a quantidade de arquivos dentro da pasta de maneira manual (Pode tentar outras soluções para contar a quantidade de arquivos depois)
  • Fiz um for que será responsável por cada um dos arquivos, começando por 1 até o último arquivo.
  • O caminho será a pasta teste, que está no mesmo local que o arquivo do Jupyter Notebook. A partir dessa pasta o caminho será o teste + o número acrescido de txt.
  • Abri o arquivo usando o read_csv, com o caminho criado, o separador sendo o espaço, sem cabeçalho, e o caracter separador de decimal com base nos seus dados é o ' , ' . Nesse caso a pandas automaticamente converte o valor para um float, entendendo o E+1 ao final como uma notação científica.
  • Ao final eu utilizei a transposta para que os dados fiquem em uma única coluna
  • Mudei o nome da coluna para 'Temperaturas'
  • Plotei os gráficos através de subplot, se eu não tivesse usado os subplots, as linhas ficariam todas no mesmo gráfico
n_arquivos = 5
for i in range(1, n_arquivos + 1):
    caminho = f'teste/teste{i}.txt'
    arquivo = pd.read_csv(caminho, sep = ' ', header=None, decimal = ',').T
    arquivo.columns = ['Temperatura']
    fig, axes = plt.subplots(1, 1, figsize=(18, 5))
    sns.lineplot(x=arquivo.index, y='Temperatura', data= arquivo, ax = axes)

Aqui está um resultado de exemplo:

Lendo vários arquivos e plotando gráficos

Obs: Coloquei um figsize menor para caber na screenshot, mas você pode mudar o tamanho a sua escolha. Pode ainda criar uma função para deixar mais automatizado, passando argumentos como quantidade de arquivos, tamanho da figura, títulos dos gráficos, etc.

Estou à disposição. Bons estudos!