Ir para o conteúdo

Dados de arquivos

Uma rápida recapitulada na leitura de arquivos

do_arquivo  = open(filename, 'r') ## abre o arquivo para leitura

linha    = do_arquivo.readline()   ## lê a próxima linha
conteudo = do_arquivo.read()       ## lê o resto do arquivo em cadeias de caracteres
linhas   = do_arquivo.readlines()  ## lê o resto do arquivo em lista
for linha in do_arquivo:           ## lê o resto do arquivo linha por linha

do_arquivo.close()                ## lembre-se de fechar o arquivo!

Exemplo: lendo dados de um arquivo para um dicionário

Conteúdo do arquivo:

Oslo: 21.8 Londres: 18.1 Berlim: 19 Paris: 23 Roma: 26 Helsinque: 17.8

Armazene em um dicionário com os nomes das cidades como chaves e as temperaturas como valores.

O programa:

do_arquivo = open('deg2.dat', 'r')
temps = {}                  ## inicie um dicionário vazio
for linha in do_arquivo.readlines():
    cidade, temp = linha.split()
    cidade = cidade[:-1]        ## remove o último caractere (:)
    temps[cidade]  = float(temp)

Lendo um arquivo com tabela para um dicionário

Um arquivo contendo uma tabela pode ser lindo para um dicionário de um dicionário.

O arquivo de dados:

       A        B       C      D
1     11.7    0.035    2017    99.1
2      9.2    0.037    2019   101.2
3     12.2     no       no    105.2
4     10.1    0.031     no    102.1
5      9.1    0.033    2009   103.3
6      8.7    0.036    2015   101.9

Crie um dicionário dados[p][i] (dicionário de dicionários) para armazenar as medicões número i (1, 2, etc.) da propriedade p (A, B, etc.).

Antes de implementar, precisamos desenvolver um plano (algoritmo) para fazer isso:

  1. Examine a primeira linha:
    • Divida em palavras;
    • Inicie um dicionário com os nomes das propriedades como chaves e dicionários vazios {} como valores;
  2. Para cada uma das linhas remanescentes:
    • Divida em palavras;
    • Para cada palavras após a primeira: se a palavra não for no converte para ponto flutuante e armazene.

MÃOS À OBRA!

Formato no arquivo de entrada

Precisamos analisar o formato no arquivo de entrada para descrever um algoritmo para interpretar o conteúdo. Exemplo, variações nos preços das ações de várias companhias:

Date,Open,High,Low,Close,Volume,Adj Close
2017-05-01,145.100006,148.089996,144.960007,147.509995,57002300,147.509995
2017-04-03,143.710007,145.460007,140.059998,143.649994,20592400,143.649994
2017-03-01,137.889999,144.50,137.050003,143.660004,25273400,143.660004
2017-02-01,127.029999,137.479996,127.010002,136.990005,31497400,136.990005
2017-01-03,115.800003,122.440002,114.760002,121.349998,30616100,120.826149
2016-12-01,110.370003,118.019997,108.25,115.82,30442300,115.320023
...
2010-08-02,260.440002,264.279999,235.559998,243.100006,113748900,31.495928
2010-07-01,254.300003,265.990021,239.600006,257.25,191879900,33.329193
2010-06-01,259.690002,279.009979,242.199982,251.529999,197621600,32.588116
2010-05-03,263.839996,267.880005,199.25,256.880005,236228300,33.281258

Dados de Yahoo Finance AAPL para a Apple (AAPL) por exemplo. Para outras companhias Yahoo Finance

Formato no arquivo:

  • Colunas separadas por vírgulas;
  • Primeira coluna é a data e a final é o preço;
  • Os preços inicial em diferentes datas.

Um exemplo de algoritmo para ler esse arquivo de dados de várias companhias:

  1. Pule a primeira linha;
  2. Leia linha por linha;
  3. Divida cada linha nas vírgulas;
  4. Armazene a primeira palavra, data, em uma lista de datas;
  5. Armazene a última palavra, preço, em uma lista de preços;
  6. Colete as listas de datas e preços e armazene em um dicionário (a chave é a companhia);
  7. Maça uma função para ler um arquivo de uma companhia em específico;

Para imprimir:

  1. Converta as datas ano-mês-dia em coordenadas de ano no eixo x para montagem de um gráfico;
  2. Observe que os históricos de preços das companhias iniciam em anos diferentes.

Dicas: usar import datetime as dt para criar criar objetos data e import glob para buscar vários arquivos, por exemplo precoAcoes_*.csv.

Resultado em escala logarítmica:

Gráfico resultante