Tushare获取数据
导入包:import tushare as ts
#token=‘自己的token’#登录Tushare 查看自己的token
#pro = ts.pro_api(token)
pro.daily(ts_code=‘股票代码’, start_date=‘开始时间’, end_date=‘结束时间’)#
将数据保存为CSV…文件
data.to_csv或excel(‘路径\文件名.csv或xlsx’,index=False)
- index=False告诉计算机保存的时候不生成0,1,2—n的索引。
数据读取并生成时间序列
data= pd.read_csv(‘D:\python数据练习文件\民生银行.csv’,index_col=‘trade_date’,parse_dates=[‘trade_date’])#读取民生银行数据,并指定交日易为索引;
- 使用parse_dates指定索引为时间序列格式,格式为列表
- 案例1
获取民生银行股票数据
import tushare as ts
token=''#登录Tushare 查看自己的token
pro = ts.pro_api(token)
msy = pro.daily(ts_code='600016.SH', start_date='20180101',end_date='20181231')#ts_code='600016.SH'股票代码
print(msy.head())#查看前五行数据
获取结果如下
保存为csv文件
msy.to_csv('D:\python数据练习文件\民生银行.csv',index=False)#保存路径,index告诉计算机保存的时候不生成0,1,2---n的索引
保存结果
读取保存的民生银行数据
msy = pd.read_csv('D:\python数据练习文件\民生银行.csv',index_col='trade_date',parse_dates=['trade_date'])#读取民生银行数据,并指定交日易为索引;使用parse_dates指定索引为时间序列格式,格式为列表
print(msy.info())#查看行信息、数据起始时间,数据量等
print(msy.head())
- 简单计算 1
输出该股票所有收盘价比开盘价涨0.03的股票日期
""问题拆解
1.获取close数据和open数据#msy['close'],同理获得open
2.获取close数据与open数据的涨跌幅#(msy['close']-msy['open'])/msy['open']
3.从2的数据中获取大于0.03的数据#msy[(msy['close']-msy['open'])/msy['open']>0.03]
4.在3中添加index获取大于0.03的数据的日期索引
"""
msy_1 =msy[(msy['close']-msy['open'])/msy['open']>0.03].index
print(msy_1)
- 简单计算 2
计算 所有开盘比昨日收盘跌幅超过0.002%的日期
最重要一点如果你获取的数据是按日期降序排序就需要使用shift函数进行调整
#所有开盘比昨日收盘跌幅超过0.02%的日期
"""表达式:(开盘-前日收盘)/前日收盘
注意点:由于我的数据获取以降序排列,因此在计算时前日收盘价时使用shift()函数将收盘价上移
(msy['open']-msy['close'].shift(-1))/msy['close'].shift(-1)>0.02
"""
msy_2 = msy[(msy['open']-msy['close'].shift(-1))/msy['close'].shift(-1)>0.002].index
print(msy_2)
- 简单计算 3
2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
表达式:收益=收入-成本
- 计算运用知识点
切片:时间序列切片是有序的data[‘’:’’]
累加求和:a+=b
累减:a-=b
格式化输出f“{}”
for循环
截取2010年-2019年数据
msy_3 = msy['2019':'2010'] # 时间序列需要注意,切片是有序的
#获取每个月第一个交易日数据,降采样
msy_monthely_1 = msy_3.resample("MS").first() # resample降采样,第一个月交易日的数据
#获取每年的最后一个交易日数据
msy_yearly_1 = msy_3.resample("A").last()
"""获取2010-2019每年的所有成本及收入"""
#(1)初始化已持有的股票和初始化成本
hold= 0
money = 0
#(2)获取2010-2019年每年的成本和收入
for year in range(2018, 2019):
cost_money += msy_monthely_1[str(year)]["open"].sum() * 100 #成本是每一年的累加,因此运用累加求和
hold += len(msy_monthely_1[str(year)]) * 100 # 一年持有股数,len()计算有多少个月步长,
sell_money = msy_yearly_1[str(year)]["open"].values[0]*hold#年末卖出的价格*卖出股数
cost_money -= sell_money#每年总成本-每年总收入
hold=0#已卖出,将持有股数清零
print(f"save_money:{-cost_money},hold:{hold}")
因为我获取数据的时候只是获取了2018年,所以计算的时候只有1年的数据。
先写到这里吧 还在学习中。在书写中如果有错,请大佬们指出。不喜欢不要喷我