- 九、时间戳的转换
九、时间戳的转换
本教程的重点是将来自 Yahoo finance API 的日期转换为 Matplotlib 可理解的日期。 为了实现它,我们要写一个新的函数,bytespdate2num。
def bytespdate2num(fmt, encoding='utf-8'):strconverter = mdates.strpdate2num(fmt)def bytesconverter(b):s = b.decode(encoding)return strconverter(s)return bytesconverter
此函数接受数据,基于编码来解码数据,然后返回它。
将此应用于我们的程序的其余部分:
import matplotlib.pyplot as pltimport numpy as npimport urllibimport matplotlib.dates as mdatesdef bytespdate2num(fmt, encoding='utf-8'):strconverter = mdates.strpdate2num(fmt)def bytesconverter(b):s = b.decode(encoding)return strconverter(s)return bytesconverterdef graph_data(stock):stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv'source_code = urllib.request.urlopen(stock_price_url).read().decode()stock_data = []split_source = source_code.split('\n')for line in split_source:split_line = line.split(',')if len(split_line) == 6:if 'values' not in line and 'labels' not in line:stock_data.append(line)date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,delimiter=',',unpack=True,# %Y = full year. 2015# %y = partial year 15# %m = number month# %d = number day# %H = hours# %M = minutes# %S = seconds# 12-06-2014# %m-%d-%Yconverters={0: bytespdate2num('%Y%m%d')})plt.plot_date(date, closep,'-', label='Price')plt.xlabel('Date')plt.ylabel('Price')plt.title('Interesting Graph\nCheck it out')plt.legend()plt.show()graph_data('TSLA')
如果你绘制 TSLA,结果图应该看起来像这样:

