python股票数据获取及保存、读取

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年的数据。

先写到这里吧 还在学习中。在书写中如果有错,请大佬们指出。不喜欢不要喷我

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值