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:
- Examine a primeira linha:
- Divida em palavras;
- Inicie um dicionário com os nomes das propriedades como chaves e dicionários vazios
{}
como valores;
- 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:
- Pule a primeira linha;
- Leia linha por linha;
- Divida cada linha nas vírgulas;
- Armazene a primeira palavra, data, em uma lista de datas;
- Armazene a última palavra, preço, em uma lista de preços;
- Colete as listas de datas e preços e armazene em um dicionário (a chave é a companhia);
- Maça uma função para ler um arquivo de uma companhia em específico;
Para imprimir:
- Converta as datas ano-mês-dia em coordenadas de ano no eixo x para montagem de um gráfico;
- 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: