[PYTHON] Enregistrer les séries chronologiques TOPIX au format pickle, csv, Excel

Que faire

J'ai fait le post précédent pour afficher la série chronologique TOPIX, donc Enregistrez-le dans différents formats pour un traitement facile plus tard.

Code pour analyser le html Yahoo Finance

Pareil qu'avant. Cependant, j'ai mis en place un appel de fonction appelé «saveataAs en quelque sorte (nom de fichier, données)».

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import pylab
import urllib2
import lxml
import lxml.html
import re

dateFr = {"year": 2000, "month":1, "day":1}
dateTo = {"year": 2013, "month":11, "day": 1}

data = []
for page in range(1, 30):
    print page
    url = "http://info.finance.yahoo.co.jp/history/?code=998405.T&sy=%d&sm=%d&sd=%d&ey=%d&em=%d&ed=%d&tm=d&p=%d"
    url = url % (dateFr["year"], dateFr["month"], dateFr["day"], dateTo["year"], dateFr["month"], dateFr["day"], page)

    html = urllib2.urlopen(url).read()
    root = lxml.html.fromstring(html)
    table = root.xpath(' //*[contains(concat(" ",normalize-space(@class)," "), " boardFin ")]')[0]

    for tr in table.xpath("descendant::tr"):
        tmp = [td.text for td in tr.xpath("descendant::td")]
        if len(tmp) != 5:
            continue
        begin = float(tmp[1].replace(",", ""))
        high  = float(tmp[2].replace(",", ""))
        low   = float(tmp[3].replace(",", ""))
        end   = float(tmp[4].replace(",", ""))
        data.append([low, high, low, high])
savedataAsPickle('topix.pickle', data)
savedataAsCSV('topix.csv', data)
savedataAsExcel('topix.xlsx', data)

Code à sauvegarder

pickle Formats trouvés dans la bibliothèque Python standard

def savedata(filename, data):
    pickle.dump(data, open(filename, "w"))

csv Abréviation des valeurs séparées par des virgules. Format de texte.

def savedata(filename, data):
    import csv
    csvobj = csv.writer(open(filename, "w"))
    csvobj.writerows(data)

Format Excel

Enregistrer dans un format lisible par Excel

def savedata(filename, data):
    import openpyxl.workbook
    import openpyxl.cell
 
    wb = openpyxl.workbook.Workbook()
    ws = wb.worksheets[0]
    ws.title = "TOPIX"
    for idat, dat in enumerate(data):
        col = openpyxl.cell.get_column_letter(idat + 1) # from 1, 2, ... to A, B, ...
        for irow, d in enumerate(dat):
            ws.cell('%s%s'%(col, irow + 1)).value = d
    wb.save(filename)

Recommended Posts

Enregistrer les séries chronologiques TOPIX au format pickle, csv, Excel
Afficher les séries chronologiques TOPIX
Type de gain de temps avec SQLAlchemy
[Django] Importer et exporter des tables DB au format Excel ou CSV
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Obtenir la date et l'heure au format spécifié
Exporter les tables Amazon RDS au format CSV
Agrégation pratique de séries chronologiques avec TimeGrouper de pandas
Obtenez des données de séries chronologiques de k-db.com avec Python
Convertir des fichiers CSV UTF-8 pour les lire dans Excel
Comment lire les données de séries chronologiques dans PyTorch
Enregistrez les données pandas dans des actifs de données au format Excel avec Cloud Pak for Data (Watson Studio)