python数据分析03--DataFrame基础操作巩固-股票分析

股票分析

tushare
** pip install tushare**

1 需求分析

使用tushare包获取某股票的历史行情数据。
输出该股票所有收盘比开盘上涨3%以上的日期。
输出该股票所有开盘比前日收盘跌幅超过2%的日期。
假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

2 实现

import tushare as ts
import pandas as pd
from pandas import Series,DataFrame
import numpy as np

# 1.获取股票历史交易数据
# 使用.get_k_data()方法,code参数写股票代码,start参数写起始时间
df = ts.get_k_data(code='600519',start='1980-01-01')
df.head()

# 2.将数据进行本地文件的存储
# .to_csv('文件路径')
df.to_csv('./maotai.csv')

# 3.将本地存储的文本数据进行df的读取
# .pd.read_csv('文件路径')
df = pd.read_csv('./maotai.csv')
df.head()

# 4.有无用的列,删除指定的列,axis=1是列,labels指定标签Unnamed:0,inplace=True代表替换原表
df.drop(labels='Unnamed:0',axis=1,inplace=True)
df.head()

# 5.info返回值的信息,每一列元素的数据类型,每一类中非空元素的个数
df.info()
# 将date列由字符串类型转换成时间序列类型, .to_datetime(字符串类型)
df['date'] = pd.to_datetime(df['date'])
# 将date列作为原始数据的行索引
df.set_index('date',inplace=True)
df.columns
df.index

# 6.输出该股票所有收盘比开盘上涨3%以上的日期,其实就是(收盘-开盘)/ 开盘 > 0.03,loc是取行,index是取索引,就拿出所有的日期了
df.loc[ (df['close']-df['open']) / df['open'] > 0.03 ].index

# 7.输出该股票所有开盘比前日收盘跌幅超过2%的日期,(开盘-前日收盘)/前日收盘 < -0.02
df.loc[(df['open'] - df['close'].shift(1)) / df['close'].shift(1) < -0.02].index

# 8.假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
data = df['2010':'2020']
data

# 数据重新取样
data_monthly = data.resample(rule='M').first()
data_monthly.head()

# cost
cost = data_monthly['close'].sum()*100

# 买股票花费
data_yearly = data.resample(rule='A').last()[:-1]
data_yearly

# 卖股票收钱
recv = data_yearly['open'].sum()*1200
recv

# 剩余股票的实际价值
price = data['close'][-1]
last_money = price*1200

# 总收益
recv+last_money-cost



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值