1
resposta

Múltiplos arquivos

Como faço para importar múltiplos arquivos TXT, e plotar um gráfico individualmente?

1 resposta

Oi Eduardo! Tudo tranquilo por aí?

Primeiramente, para fazer a importação desses arquivos seria necessário fazer uma lista contendo os nomes dos arquivos txt. Entretanto, o conteúdo dessa lista, pode variar de acordo com o diretório que seus arquivos se encontram, e de como os seus dados estão dispostos no seu arquivo txt.

No caso do exemplo que vou mostrar abaixo, o código foi feito no Jupyter Notebook, e eu utilizei 3 arquivos .txt como exemplos (frutas.txt, notas.txt, roupas.txt).

Todos os arquivos txt utilizados estavam seguindo o seguinte padrão:

Maçã,13
Uva,17
Banana,12

Seguindo a ordem: palavra, vírgula e uma quebra de linha ' \n '.

O código utilizado para a geração do gráfico, foi o seguinte:

arquivos = ["dados/notas.txt", "dados/frutas.txt", "dados/roupas.txt"] # lista de arquivos a serem lidos

for arquivo in arquivos:
    file = open(arquivo, mode = 'r', encoding = 'utf-8') # percorre cada arquivo dentro da lista arquivos
    nome_do_arquivo = arquivo.split('/')[1].split('.txt')[0] # separa o nome do arquivo do 'dados/' e do '.txt' 

    linhas_arquivo = file.readlines() # faz a leitura de todas as linhas do arquivo

    x = [linha.split(',')[0] for linha in linhas_arquivo] # pega a primeira coluna do arquivo
    y = [int(linha.split(',')[1].split('\n')[0]) for linha in linhas_arquivo] # pega a segunda coluna do arquivo
    print(y)

    plt.figure() # cria uma nova figura
    plt.bar(x, y) # plota um gráfico de barras
    plt.title(nome_do_arquivo) # coloca o título do gráfico
    plt.yticks(range(0,20,5)) # limita os valores do eixo y

Os comentários na frente de cada linha estão explicando qual a função de cada uma.

Na parte que definimos o x e o y, o que estamos fazendo é pegando a lista linhas_arquivo que contém nossos dados separados por ' , ' e estamos quebrando eles, conforme foi feito anteriormente por meio do método split.

No caso do x, nós separamos os dados de acordo com a vírgula e selecionamos apenas o nome, por meio do índice [0].

Já no caso do y, fazemos a mesma separação por vírgula utilizando o método split e selecionamos apenas os valores por meio do índice [1]. Após isso fazemos uma segunda separação: split('\n') para conseguir separar o ' \n ', e convertemos esses valores para o tipo int, para que na hora de fazer o gráfico não ocorra nenhum possível problema.

Com isso, caso você print as variáveis x e y vai perceber que elas ficam definidas da seguinte maneira:

x:

['Maria', 'Ryan', 'Júlia']
['Maçã', 'Uva', 'Banana']
['Camisetas', 'Calças', 'Bermudas']

y:

[10, 9, 8]
[13, 17, 12]
[13, 15, 18]

E os gráficos resultantes desse exemplo ficam assim:

Imagem contendo os 3 gráficos gerados pelo código exemplo que está aqui no tópico

Espero ter ajudado.

Qualquer dúvida vamos nos falando por aqui, tá bom?

Bons estudos!