python金融量化——股票数据分割+计算单支股票利益率曲线(代码)

目录

1.股票数据分割

2.计算单支股票利益率曲线


1.股票数据分割

import pandas as pd


# 读取数据并进行初步处理
def read_csv_shuju(path):
    '''

    :param path:
    path:文件路径
    :return:
    data2: 处理后数据
    '''
    data1 = pd.read_csv(path, sep=',')
    data1['date'] = pd.to_datetime(data1['time'])
    data1['date']=data1['date'].dt.date
    data2 = data1.drop([ 'time','volume', 'amount', 'open_interest'], axis=1)
    data2.set_index('code', inplace=True)
    states = ['date','open', 'hight', 'low', 'close']
    data2.reindex(columns=states)
    return data2

# 对数据进行分割并保存
def write_csv_data(data,start,code):
    '''
    :param:
    data:需要分割的原始数据
    start:上一次调用所到数据(每次输入时需要修改start的值为上一次输出的end值)
    code:输入需要分割的数据的股票名称
    :return: 根据输入的股票名称截取股票数据所在的列范围数据

    '''
    stock_code=[]
    end=0
    end+=start

    for i in range(end,len(data.index)):
         if data.index[i] == code:
              end+=1
         else:
              continue
    stock_code=data[start:end]
    return end,stock_code



if __name__ == '__main__':
    '''
    stock_data为读取后初步处理数据(未分割)
    stock_code为对数据按照股票代码进行分割后数据
    '''
    # 文件路径
    path1 = '../data/附录一:30支股票行情.csv'

    stock_data = read_csv_shuju(path1)
    print("初步处理数据:")
    print(stock_data)
    # print(len(stock_data.index))
    # print(stock_data.index[69696])


    '''
     # 这里需要手动修改参数,依次分割30支股票
    需要修改的参数:
    start: 修改为上一次输出的end值
    code: 修改为需要分割出来的股票代码
    文件名: 存入csv时的路径文件名
    '''
    end=0
    start=67431
    code='szse.000028'
    stock_code=[]
    end,stock_code=write_csv_data(stock_data,start,code)
    # stock_code.to_csv('./code_data/30.csv')
    print('分割后股票数据:')
    print(stock_code)
    print(stock_code.index)
    print('end:')
    print(end)

2.计算单支股票利益率曲线

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import datetime

file_path = './data/30gupiao.csv'
data = pd.read_csv(file_path, header=0, low_memory=False, index_col=1)

print(data.head())
data['value'] = data['close'] / data['open']
print(data['value'])

print(data.index)
data['date'] = pd.to_datetime(data.index)
data['year'] = data['date'].dt.date
print(data['date'])
print(data['year'])
data.index=data['year']
data1=data[:2000]
data2=[]


fig, ax = plt.subplots(1,2,figsize=(14,4))
ax[0].plot(data1['close'],color='b')
ax[1].plot(data1['value'],color='r')
# ax.set_xlim(data['time'])
plt.title('szse_002027')
plt.show()

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_52135595/article/details/127374547
今日推荐