wind pandas 数据分析绘图

#!/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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值