Использование Numpy для создания финансового ценового стола Yahoo

Без использования модуля matplotlib. Мне нравится получать данные url в массив numpy. где я могу заголовок столбца, чтобы сделать математику. Подобно:

prices = r.adj_close 

От: http://matplotlib.sourceforge.net/examples/pylab_examples/finance_work2.html

кроме того, я не хочу использовать:

 fh = finance.fetch_historical_yahoo(ticker, startdate, enddate) # a numpy record array with fields: date, open, high, low, close, volume, adj_close) r = mlab.csv2rec(fh); fh.close() r.sort() 

Используя вручную создайте URL-адрес:

  url = http://ichart.yahoo.com/table.csv?a=2&c=2011&b=30&e=7&d=7&g=d&f=2011&s=msft&ignore=.csv f = urllib.urlopen(url) fr = f.read() hdata = np.asarray(fr, dtype='object') prices = hdata.adj_close print prices 

  • Python: Загрузить возвращенный Zip-файл из URL-адреса
  • Разбор заголовка HTTP-запроса с помощью Python
  • Прочтите CSV-файл из URL-адреса в Python 3.x - _csv.Error: iterator должен возвращать строки, а не байты (вы открыли файл в текстовом режиме?)
  • Асинхронная URL-схема, когда нам не нужен результат?
  • Имя файла urllib2
  • Django: поддержка аргументов строкового представления для url () устарела и будет удалена в Django 1.10
  • Изменение имени хоста в URL-адресе
  • Python urlparse - вырезать доменное имя без субдомена
  • 3 Solutions collect form web for “Использование Numpy для создания финансового ценового стола Yahoo”

    используйте numpy.loadtxt () для загрузки csv:

     import numpy as np import pylab as pl import urllib url = "http://ichart.yahoo.com/table.csv?a=2&c=2011&b=30&e=7&d=7&g=d&f=2011&s=msft&ignore=.csv" f = urllib.urlopen(url) title = f.readline().strip().split(",") data = np.loadtxt(f, dtype=np.float, delimiter=",", converters={0: pl.datestr2num})) 

    первый столбец – дата, поэтому используйте pylab.datestr2num, чтобы преобразовать его в число.

    Если вы не хотите загружать pylab для преобразования строки времени, вы можете использовать функцию mktime как лямбда:

     import numpy as np import urllib import time url = "http://ichart.yahoo.com/table.csv?a=2&c=2011&b=30&e=7&d=7&g=d&f=2011&s=msft&ignore=.csv" f = urllib.urlopen(url) title = f.readline().strip().split(",") data = np.loadtxt(f, dtype={'names': ('dtime', 'open', 'high','low','close','volume','aclose'), 'formats': ('u4', 'f8', 'f8','f8','f8','u4','f8')}, delimiter=",", converters={0: lambda y:int(time.mktime(time.strptime(y,'%Y-%m-%d')))}) 

    Также можно использовать S10 чтобы указать numpy, что первый объект представляет собой строку длиной 10. Таким образом, вам не нужно использовать лямбда.

     data = np.loadtxt(f, dtype={'names': ('dtime', 'open', 'high','low','close','volume','aclose'), 'formats': ('S10', '<f8', '<f8','<f8','<f8','i','<f8')}, delimiter="," ) i=integer, <f8 =0.256, f8=0.25600001298, S10="MM-DD-YYYY" 

    Для получения дополнительной информации о f, f8, u4, S, u8 и т. Д., Перейдите по этой ссылке .

    Python - лучший язык программирования в мире.