目录
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()
运行结果: