您的位置:首页 > 其它

wind pandas 数据分析绘图

2016-08-15 08:45 218 查看
#!/usr/bin/env python
#coding:utf-8
from WindPy import w
from datetime import datetime
from pandas.tseries.offsets import Day
from pandas import Series
from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

#plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
#plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
period_day=60
Long='1701'
Short='1609'
#varieties=['M.DCE','Y.DCE','P.DCE','JD.DCE','L.DCE','J.DCE','JM.DCE','I.DCE','SR.CZC','CF.CZC','FG.CZC','MA.CZC','RM.CZC','TA.CZC','RU.SHF','RB.SHF']
varieties=['M.DCE','Y.DCE','P.DCE','JD.DCE','L.DCE','J.DCE','JM.DCE','I.DCE','SR.CZC','CF.CZC','FG.CZC','MA.CZC','RM.CZC','TA.CZC','RB.SHF']
#varieties=['P.DCE','CF.CZC','FG.CZC','MA.CZC','RM.CZC']
dfall=DataFrame()

def generate_pd(contracts):
#wsd_data=w.wsd(contracts, "close", (datetime.now()-period_day*Day()).strftime('%Y-%m-%d'), datetime.now().strftime('%Y-%m-%d'), "")
wsd_data=w.wsd(contracts, "close", (datetime.now()-period_day*Day()), datetime.now(), "")
df=DataFrame(wsd_data.Data,index=wsd_data.Codes,columns=wsd_data.Times)
df=df.T
#df.index=Series(df.index).dt.strftime('%Y-%m-%d')
#df=DataFrame({wsd_data.Codes[0]:wsd_data.Data[0], wsd_data.Codes[1]:wsd_data.Data[1], wsd_data.Codes[2]:wsd_data.Data[2], wsd_data.Codes[3]:wsd_data.Data[3]}, columns=contracts, index=Series(wsd_data.Times).dt.strftime('%Y-%m-%d'))
df.ix[:,0]=df.ix[:,0]-df.ix[:,1]
#del df[contracts[1]]
dfall[(contracts[0][:-4]+'-'+contracts[1][:-4])]=df.ix[:,0]

def main():
w.start()
for varity in varieties:
contracts=[]
if varity[-3:]=='CZC':
contracts.append(varity[:-4]+Long[-3:]+varity[-4:])
contracts.append(varity[:-4]+Short[-3:]+varity[-4:])
else:
contracts.append(varity[:-4]+Long+varity[-4:])
contracts.append(varity[:-4]+Short+varity[-4:])
generate_pd(contracts)

plt.ioff()  #是否显示图片
dfall.dropna(inplace=True)
dfall.plot(grid=True, title=Long+'-'+Short, figsize=(25,12), alpha=0.618)
for i in range(len(dfall.columns)):
plt.annotate(filter(str.isalpha,str(dfall.columns[i][0:2])), xy=(dfall.index[-3-i], dfall.ix[-3-i,i]), xytext=(dfall.index[-5-i], dfall.ix[-3-i,i]),arrowprops=dict(arrowstyle="-"),color='r')
#dfall.to_excel('futures_spread.xlsx')
plt.savefig('futures_spread.png',dpi=128)
#plt.xticks(pd.date_range(dfall.index[0],dfall.index[-1],freq='D'))

if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: