股票数据的处理(获取,头部尾部显示,循环处理,向量化处理,提取列数据,画图)

# hanbb
# come on!!!
import pandas_datareader.data as web
import datetime
import numpy as np
import matplotlib.pyplot as plt
start = datetime.datetime(2016, 1, 1) # or start = '1/1/2016'
end = datetime.date.today()
date = web.get_data_yahoo('300481.sz',start=start,end=end)
# DAX = web.DataReader(name="GDAXI",data_source="yahoo",start=start,end=end)

# print(date.info()) # 打印基本信息
# print(date.head()) # 打印头五条信息
# print(date.tail()) # 打印后面五条信息

# 图形显示
# plt.plot(date['Close'])
# plt.show()

'''
# 循环方法处理
date['ret_loop']=0.0  # 增加一列全部是零
for i in range(1,len(date)):              # 一列数据的逐个处理
     date['ret_loop'][i]=np.log(date["Close"][i]/date["Close"][i-1])
#
# # plt.plot(date['ret_loop'])
# # plt.show()
# print(date[['Close','ret_loop']].tail())   # 打印两列的尾部信息
'''

# 向量化处理
date['return']=np.log(date["Close"]/date["Close"].shift(1))
print(date[['Close','return']].tail())

# 图像显示
plt.figure(figsize=(7,5))       # 确定图片大小
plt.subplot(211)                # 确定第一个图的位置 (行,列,第几个)两行一列第一个图

plt.plot(date['Close'],'b',label="Close")

plt.grid(True)
plt.axis('tight')
plt.xlabel("Date")
plt.ylabel('Colse')
plt.title("300481",size=20)

plt.legend(loc=0)

plt.subplot(212)               # 确定第一个图的位置
plt.plot(date['return'],'g',label="Return")
plt.ylim(-0.15,0.15)
plt.ylabel("Return")
plt.legend(loc=0)

plt.show()

posted @ 2017-11-19 22:37  hbb360  阅读(587)  评论(0编辑  收藏  举报