标签:pytho tushare nump 计算 date sar datetime store 读取
import numpy as np 
import pandas as pd  
import tushare as ts  
import datetime  
import time  
import tushare as ts  
import os  
import matplotlib  
import matplotlib.pyplot as plt  
 
def gen_save_exchange_calendar():
    #从TuShare读取开市日历,然后自己计算week/month/querter/year sart/end 属性
    #然后保存在本地以供以后使用
    cal_dates = ts.trade_cal()
    cal_dates[‘isWeekStart‘] = 0
    cal_dates[‘isWeekEnd‘] = 0
    cal_dates[‘isMonthStart‘] = 0
    cal_dates[‘isMonthEnd‘] = 0
    cal_dates[‘isQuarterStart‘] = 0
    cal_dates[‘isQuarterEnd‘] = 0
    cal_dates[‘isYearStart‘] = 0
    cal_dates[‘isYearEnd‘] = 0
    previous_i = -1
    previous_open_week = -1
    previous_open_month = -1
    previous_open_year = -1
 
    for i in cal_dates.index:
        str_date = cal_dates.loc[i][‘calendarDate‘]
        isOpen = cal_dates.loc[i][‘isOpen‘]
        if not isOpen:
            continue
        date = datetime.datetime.strptime(str_date, ‘%Y-%m-%d‘).date()
        #设置isWeekStart和isWeekEnd
        current_open_week = date.isocalendar()[1]
        if current_open_week != previous_open_week:
            cal_dates.ix[i, ‘isWeekStart‘] = 1
            if previous_open_week != -1:
                cal_dates.ix[previous_i, ‘isWeekEnd‘] = 1
            
        #设置isMonthStart和isMonthEnd
        current_open_month = date.month
        if current_open_month != previous_open_month:
            cal_dates.ix[i, ‘isMonthStart‘] = 1
            if previous_open_month != -1:
                cal_dates.ix[previous_i, ‘isMonthEnd‘] = 1
            #顺便根据月份设置isQuarterStart和isQuarterEnd
            if current_open_month in [1, 4, 7, 10]:
                cal_dates.ix[i, ‘isQuarterStart‘] = 1 
                if previous_open_month != -1:
                    cal_dates.ix[previous_i, ‘isQuarterEnd‘] = 1
            #有个特殊情况是交易所开始第一天应为QuarterStart
            if previous_open_month == -1:
                cal_dates.ix[i, ‘isQuarterStart‘] = 1
                
        #设置isYearStart和isYearEnd
        current_open_year = date.year
        if current_open_year != previous_open_year:
            cal_dates.ix[i, ‘isYearStart‘] = 1
            if previous_open_year != -1:
                cal_dates.ix[previous_i, ‘isYearEnd‘] = 1            
 
        previous_i = i
        previous_open_week = current_open_week
        previous_open_month = current_open_month
        previous_open_year = current_open_year
        
    #保存到本地文件中
    file_name = ‘D:\\python_study\\stock_hist_data\\exchange_calendar.h5‘
    hdf5_file=pd.HDFStore(file_name, ‘w‘,complevel=4, complib=‘blosc‘)
    hdf5_file[‘data‘]=cal_dates 
    hdf5_file.close()  
    
    
gen_save_exchange_calendar()
标签:pytho tushare nump 计算 date sar datetime store 读取
原文地址:https://www.cnblogs.com/Rvin/p/9331062.html