Python之Tushare模块实现股票分析案例

Python之Tushare模块实现股票分析案例

一、Python之股票数据模块

目前有一个公开的股票数据等各种商业数据的模块,
主要适用于Python。
tushare模块便是这个公开的模块,其链接如下:
http://tushare.org/trading.html#id2
当然,如果直接到这个网页会有以下提示:
在这里插入图片描述
你直接点击跳转即可,因为原来这个已经不再更新了。
新的网址链接为:
https://waditu.com/document/41?doc_id=52
对于新的网址,你应该注册一个账户,否则无法获取信息,当然了,注册是免费的啦~~
在这里插入图片描述

二、股票分析案例的需求

1、获取数据;
2、找出股票收盘 > 开盘的日期;
3、找出开盘比前一天收盘低 2% 以上的日期。
4、具体的收益计算;
5、将获取到的数据绘制成一个图像。

另外:

DataFrame的介绍可以参见我的另一篇博文:
https://blog.csdn.net/m0_54218263/article/details/114501740

三、具体实现(讲解版本)

(注:我用的是新版的接口 !!)

1、获取数据

import pandas as pd
import numpy as np
import tushare as ts
import matplotlib.pyplot as plt
"""
pd : 数据处理模块
np : 数学模块
ts : 获取数据模块
plt : 绘图模块
"""
pro = ts.pro_api('614d0dfa6de5b8267a09a761707da53149622ea8cb1bdbbc14b659e4')
# 输入你自己的设备的api
# 这个是动态的~~~,你抄我的也没用~~~~
df = pro.daily(ts_code='000001.SZ', start_date='20190718', end_date='20210308')
# df 是一个 DataFrame 对象
# ts_code 是股票代码
# start_date 是开始日期
# end_date 世界树日期
print(df)

在这里插入图片描述
(注:我们获取到了397条数据,用DataFrame对象存储了起来 !!)

2、数据的预处理

(此处建议每操作一次就打印一次 df 对象,这样可以更好地理解整个过程)

df.to_csv('./data.csv')
# 存储数据
df = pd.read_csv('./data.csv')
# 读取文件中存储下来的数据
# 这样可以使我们不必重复访问Tushare
df = df.drop(['Unnamed: 0'], axis=1)
df = df.drop(['ts_code'], axis=1)
# 删除不需要的这两列数据!!!
df.iloc[::-1,:]
# 将数据的行进行倒置,原因是, df 中的时间是从后到前的
# print(df.info())--->查看数据类型
# 打印结果如下:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 397 entries, 396 to 0
# Data columns (total 10 columns):
#  #   Column      Non-Null Count  Dtype  
# ---  ------      --------------  -----  
#  0   trade_date  397 non-null    int64  
#  1   open        397 non-null    float64
#  2   high        397 non-null    float64
#  3   low         397 non-null    float64
#  4   close       397 non-null    float64
#  5   pre_close   397 non-null    float64
#  6   change      397 non-null    float64
#  7   pct_chg     397 non-null    float64
#  8   vol         397 non-null    float64
#  9   amount      397 non-null    float64
# dtypes: float64(9), int64(1)
# memory usage: 31.1 KB
# None

# 1 、 将 trade_date 转换为 str 类型便于在转换为时间戳
for i in range(397):
	df.iloc[i, 0] = str(df.iloc[i, 0])
# 2 、 将 trade_date 转换为时间戳类型便于后续的操作
df['trade_date'] = pd.to_datetime(df['trade_date'])
# 将索引变为 'trade_date'
df.set_index(['trade_date'], inplace=True)

最终,预处理结束后,DataFrame对象变为了:
在这里插入图片描述

3、找出股票收盘 > 开盘的日期

data_1 = df.loc[df['close'] > df['open']].index
# 注意这里一定不能加()!!
print(data_1)


# 结果展示如下:
DatetimeIndex(['2019-07-18', '2019-07-19', '2019-07-24', '2019-07-25',
               '2019-07-26', '2019-07-29', '2019-07-30', '2019-08-01',
               '2019-08-06', '2019-08-07',
               ...
               '2021-01-28', '2021-01-29', '2021-02-01', '2021-02-03',
               '2021-02-04', '2021-02-05', '2021-02-18', '2021-03-02',
               '2021-03-03', '2021-03-04'],
              dtype='datetime64[ns]', name='trade_date', length=198, freq=None)

第二个需求也就实现了~~

4、找出开盘比前一天收盘低 2% 以上的日期

data_2 = df.loc[df['open'] < (1 - 0.02) * df['close'].shift(1)].index
"""
df['close'].shift(1):
整体向下移动一位
"""
print(data_2)


# 结果展示如下:
DatetimeIndex(['2019-08-02', '2019-08-15', '2020-02-03', '2020-03-09',
               '2020-03-13', '2020-03-23', '2020-03-30', '2021-02-02',
               '2021-02-04', '2021-02-26'],
              dtype='datetime64[ns]', name='trade_date', freq=None)

这个即就是第三个需求~~

5、具体的收益计算

具体的收益计算要求如下:
1、每个月交易的第一天买入100股;(以open计算)
2、当一年结束时卖出今年的所有股票;(以close计算)
3、日期以 start_date=‘20190718’, end_date=‘20210308’ 来计算;
4、求出收益的数值。

new_df_1 = df.resample('M').first()
# 找到一个月的第一次交易
payment = new_df_1['open'].sum() * 100

new_df_2 = df.resample('A').last()
# 找到一年的最后一次交易
# 这里注意  年  是:  A 来表示!!
# 计算收益是注意:
# 今年是2021,2021还没有结束,这一点是应该考虑到的
new_new_df_2 = new_df_2[0:2]
reward_1 = new_new_df_2['close'].sum() * 1200
# 2019 & 2020
reward_2 = new_df_2.iloc[2, 3] * 100 * 3
# 2021 的预估
reward = reward_2 + reward_1

result = reward - payment
print(result)



# 结果为:
16269.999999999993

因此,收益计算也就到此为止了,此例中最终是获利了的~~

(如果说,我的计算代码没有错的话,就是这个数值了,
但是如果有错的话,还请各位大佬们及时帮我纠正,一定要向我指出错误之处啊~
在这里,我就先谢谢各位大佬们了~
么么哒~~)

6、将获取到的数据绘制成一个图像

本操作有一点特殊,所以,代码必须重新写入。即需要重新构建一个Python文件,因为这里所用的东西与上面所需要的东西有一点冲突!!
代码如下:

这里,我们绘制交易数量与时间的散点图

import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts

pro = ts.pro_api('614d0dfa6de5b8267a09a761707da53149622ea8cb1bdbbc14b659e4')
df = pro.daily(ts_code='000001.SZ', start_date='20210101', end_date='20210308')

# 求出时间列表!!
df1 = df.iloc[:, 1:2]
for i in range(41):
    df1.iloc[i, 0] = str(df1.iloc[i, 0])
df1['trade_date'] = pd.to_datetime(df1['trade_date'])
list_date = list(df1['trade_date'])

# 求出交易数量列表
df2 = df.iloc[:, -1:]
list_amount = list(df2['amount'])
print(list_amount)

# 绘图
# 设置画布
plt.figure(figsize=(400, 600), dpi=25)
"""
c-->颜色
s-->画的圆点的大小
label-->标签名称
"""
plt.scatter(list_date, list_amount, c='red', s=300, label='Amount')
# x 轴
"""
rotation-->旋转多少度
size-->坐标名称的大小
"""
plt.xticks(list_date, rotation=90, size=30)
# y 轴
plt.yticks(list_amount, size=30)

# 设置轴的名称以及它们的样式:
plt.xlabel("Date", fontdict={'size': 50})
plt.ylabel("Amount", rotation=90, fontdict={'size': 50})
plt.title("Amount - Date -Picture", fontdict={'size': 70})
plt.legend(loc='best')

# 显示画面
plt.show()

结果展示如下所示:
(这里绘制的数据是一个相对的数值,是同时除以了一个数的,但显然是不影响结果的比较哒)
在这里插入图片描述
注意设置点的大小,不然就会像下图一样看不清了:

在这里插入图片描述
这里强调一个事情,就是说,Amount千万不要转成字符串,否则会像下面这张图了啊www:
在这里插入图片描述

四、具体实现(具体实现的整合版本)

在整合中,我们调整了各个任务完成的顺序以便于可以在一个Python文件中实现。

这里请参见我的另一篇博文:
“Python之Tushare模块实现股票分析案例整合版”

五、总结

以上就是一个简单的股票分析案例的举例,这个案例比较简单,但是可以作为入门的第一个分析案例还是很不错的,因此将其整理下来供大家进行参考,希望对大家有所帮助~~
最后呢,
感谢大家的支持,
喜欢的话就点个赞嘛~~~

  • 33
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
### 回答1: Python可以使用Tushare库来分析股票Tushare是一个开源的Python库,提供了丰富的股票数据接口,包括股票行情、财务数据、宏观经济数据等。使用Tushare库可以方便地获取股票数据,并进行数据分析和可视化。例如,可以使用Tushare获取某只股票的历史行情数据,计算其收益率和波动率,绘制K线图和移动平均线图等。同时,Tushare还提供了一些常用的技术指标计算函数,如MACD、RSI、BOLL等,可以帮助分析股票的趋势和买卖信号。总之,使用PythonTushare库可以方便地进行股票分析和交易策略研究。 ### 回答2: 随着人们越来越关注股票市场,股票投资已经成为一种广泛的投资形式。股市是一个复杂的系统,有许多因素可以影响股票价格的变化。因此,对股票市场进行分析和研究是非常必要的,以做出正确的投资决策。Python语言的应用在数据分析领域变得越来越流行。Tushare作为一个基于Python的免费开源的股票数据接口,可以让开发人员、数据科学家、金融专家更直观地了解和研究股市数据,简化了股票数据的查询和处理过程,也为更广泛的投资者提供了有用的数据。 Tushare提供了广泛的股票数据接口,包括股票历史和实时的行情数据、基本面数据、财务数据、股票资讯等。这些数据可以用于制作股票价格趋势图、股票分析、基金分析、宏观经济数据等。通过Python的编程语言,可以利用Tushare获取股票数据,并使用Python的数据分析库对数据进行处理和分析Tushare提供了一系列数据获取和处理函数,比如获取历史行情数据、获取股票基本面数据、利用均线分析指标等。对于日常的数据分析来说,这些函数非常有用。此外,Tushare还提供了获取某些行业和概念的龙头股票数据的功能,自带一些简单易用的特征计算函数。这些函数可以帮助股票投资者快速得到行业和概念龙头股票的信息,从而辅助他们做出正确的投资决策。 在使用Tushare进行股票分析时,需要有Python编程和数据分析的基础知识。使用Tushare可以让股票投资者更直接地获取有用的股票数据、分析股票市场、制定正确的投资策略,对于开发人员来说,也帮助他们快速地开发和研究股票分析的功能。Tushare是一个强大和完整的股票数据接口,不管是对于股票分析还是开发股票分析工具都有很大的帮助。 ### 回答3: tushare是一个基于Python语言的开源数据接口,可以方便地获取股票和金融数据。它的使用非常简单方便,通过设置参数和调用API就可以获取各种数据。 要分析股票,我们首先需要通过tushare获取股票的数据,包括历史股价信息、公司基本面信息、财报数据及宏观经济数据等等。这些数据可以用于制定投资策略、图表技术分析、基本面分析等等。 由于tushare提供的数据非常全面,我们可以利用Python做进一步的数据清洗、处理和可视化,以此增强数据分析的准确性和有效性。 具体地,使用tushare分析股票通常需要以下步骤: 1. 安装tushare库并获取API token。 2. 查看tushare提供的API,选择需要的数据接口,并设置各种参数,例如查询起始日期、股票代码、股票交易所等。 3. 调用API获取数据并转换为DataFrame格式,方便进一步数据处理。 4. 利用Python进行数据清洗和处理,例如填充缺失值、删除异常值等。 5. 制定投资策略,例如根据历史数据制定均线策略、震荡指标策略、MACD策略等。 6. 进行可视化操作,例如利用Python中的Matplotlib库或者Seaborn库制作各种图表,例如K线图、MACD图、RSI图等,以此更好地分析数据。 总之,Python语言结合tushare可以方便地进行股票分析,让投资者更好地把握市场趋势,做出更明智的投资决策。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhh江月

您的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值