数据分析——股票为例

数据分析——股票为例

import pandas as pd
import numpy as np
import tushare as ts

其中的tushare为第三方库,专门为了处理股票数据而开发的。
首先导入茅台的股票数据,茅台的股票代码为600519

td=ts.get_k_data(code='600519',start='2000-01-01')

将获得的股票代码存入csv文件

td.to_csv('maotai.csv',index=False)

查看数据:td.head()
在这里插入图片描述
查看每一列的信息:

td.info()

在这里插入图片描述
将date这一列的类型转换为日期格式:

td['date']=pd.to_datetime(td['date'])

将date设为行名:

td.set_index('date',inplace=True)

在这里插入图片描述
求解收盘价比开盘价涨幅超过3%的日期:

sz_date=td.loc[(td['close']-td['open'])/td['open']>0.03].index
sz_date

在这里插入图片描述
求解开盘价比上一交易日收盘价下跌超过2%的日期:

td.loc[(td['open']-td['close'].shift(1))/td['close'].shift(1)<-0.02]
xd_date=td.loc[(td['open']-td['close'].shift(1))/td['close'].shift(1)<-0.02].index
xd_date

其中的shift(1)相当于将收盘价整体下移一个交易日。
在这里插入图片描述
求解:某段时间内每月第一个交易日买入100首股票,每年最后一个交易日卖出。赚多少钱。
首先确定某段时间是多久(2002-01----2021-12)

new_df=td['2002-01':'2021-12']
new_df

在这里插入图片描述

mairu=new_df.resample('M').first()
mairu

resample(‘M’)表示重采样,括号中的‘M’表示按月采样,first()表示取每月的第一个日期。
在这里插入图片描述
上图显示错误,date那一列应该是每月的第一个交易日。

maichu=new_df.resample("A").last()
maichu

‘A’表示按年采样,取每年的最后一个交易日。
在这里插入图片描述

buy_total=mairu['open'].sum()*100
sale_total=maichu['open'].sum()*1200
total=sale_total-buy_total
total

求解:金叉、死叉日期
首先求解5日、30日均线:

MA5=td['close'].rolling(5).mean()[50:]
MA5
MA30=td['close'].rolling(30).mean()[50:]
MA30
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(MA5[50:180])
plt.plot(MA30[50:180])

在这里插入图片描述
先算出如下的公式:

s1=MA5<MA30
s2=MA5>MA30

死叉这样计算:

death_ex=s1 & s2.shift(1)
death_ex_date=td[50:].loc[death_ex].index
death_ex_date

金叉这样计算:

glod_ex=~(s1 | s2.shift(1))
glod_ex_date=td[50:].loc[glod_ex].index
glod_ex_date
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值