发布时间:2023-09-20 18:30
TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据来源方面极大地减轻了工作 量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数 据库做分析,您也可以通过TuShare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,TuShare同时 兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
python的强大之处就在于有一帮第三方库的兄弟,股票方面也是如此,今天给大家讲一下这个库,他就是tushare库(官方地址:http://tushare.org/),大家可以直接用pip安装,以Windows安装为例吧。
安装过程可以参考我以前的博客:点击查看python用命令安装第三方库教程
我下面以jupyter notebook安装为例,给大家展示一下:
安装完成以后接下来就是我们的获取股票数据。
import tushare as ts
df = ts.get_k_data('000002',start = "2010-01-01",end = '2020-01-01')
df.set_index('date',inplace = True)
df.head()
获取数据结果展示:
我们后面案例通过万科A来进行的,所以我们先获取一下万科A的数据,通过get_k_data()函数获取上市公司万科从2009-01-01到2019-01-01这十年的股票日线级别的数据,参数“000002”为万科的股票代码。
import tushare as ts
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
df.head()
结果展示:
‘’
注:open 开盘价,close 收盘价,high 最高价,low为最低价,volume为成交量,code为股票代码。
若想获取数据写入Excel工作簿中,我们可以按如下代码:
df.to_excel('D:\\Python\\股价数据.xlsx',index = False)
注意:index参数False表示忽略原来的行索引,运行后生成一个名为“股价数据.xlsx”的Excel文件。
如上面我是设置了将文件保存到D:\Python\下面,完全可以不用设置,只要自己知道默认文件夹在哪,一定要自己方便查找。
下面绘制一下股票走势图:
import tushare as ts
import matplotlib.pyplot as plt
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
plt.rcParams['font.sans-serif']=['simHei']#用来正常显示中文
df['close'].plot(title = '股票走势图')
结果展示:
上述使用的是plot()函数,我们也可以直接使用Matplotlib函数库的一些功能。
import tushare as ts
from datetime import datetime
import matplotlib.pyplot as plt
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
#要注意细节,调整日期格式,让横坐标的显示效果更佳清洗,美观
df['date'] = df['date'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
plt.plot(df['date'],df['close'])
plt.show()
1.安装绘制K线图的库
K线分为两种,如果当天收盘价高于开盘价,即当天价格上涨,称为阳线。通常绘为红线。
反之就是当天价格上涨,称为阴线,通常绘为绿线。
python在绘画K线的时候也用到一个库,mpl_finance库,参照以前推送安装教程,该库中的candlestick_ochl()函数绘制K线图,下面就用python编写的案例大家参考一下。
安装成功截图:(jupyter notebook安装方法)
2.获取数据
import tushare as ts
import matplotlib.pyplot as plt
import mpl_finance as mpf
import seaborn as sns #引入图表美化库
sns.set()#激活
df = ts.get_k_data('000002','2019-06-01','2019-09-30')
df.head()
from matplotlib.pylab import date2num
import datetime #导入日期格式涉及的两个库
def date_to_num(dates):
num_time = []
for date in dates:
date_time = datetime.datetime.strptime(date,'%Y-%m-%d')
num_date = date2num(date_time)
num_time.append(num_date)
return num_time
df_arr = df.values #将DataFrame中数据转换成二维数组
df_arr[:,0] = date_to_num(df_arr[:,0])# 将二维数组中日期转换成数字格式
4.绘制K直线
fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
plt.grid(True)#绘制网格线
ax.xaxis_date()#设置x轴的刻度线格式为常规日期格式
运行结果展示:
添加均线图:以添加5日均线和10日均线为例、
df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()
将其制成图表查看:
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置正常中文显示
fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = "r",colordown = 'g',alpha = 1.0) #绘制K直线
plt.plot(df_arr[:,0],df["MA5"])
plt.plot(df_arr[:,0],df['MA10'])
plt.grid(True) #绘制网格线
plt.title('万科A')#标题
plt.xlabel('日期')#X轴
plt.ylabel('价格')#y轴
ax.xaxis_date()
运行结果:
我们在上面基础上再添加一个日成交量柱形图。代码如下:
fig,axes = plt.subplots(2,1,sharex = True,figsize = (15,8))
ax1,ax2 = axes.flatten()
#绘制第一张子图:K线图和均线图
mpf.candlestick_ochl(ax1,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
ax1.plot(df_arr[:,0],df['MA5']) #绘制5日均线
ax1.plot(df_arr[:,0],df['MA10'])#绘制10日均线
ax1.set_title('万科A')
ax1.set_ylabel('价格')
ax1.grid(True)
ax1.xaxis_date()
#绘制第二张子图:每日成交柱形图
ax2.bar(df_arr[:,0],df_arr[:,5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()
运行结果:
本文主要就是介绍一下通过NumPy,pandas,Matplotlib三个数据分析利器画图,利用股票数据进行一些操作,大家也可以利用这个数据,做一些数据分析,练练手。
运筹优化工具ortools解读与实践-MIP求解器与CP-SAT求解器对比
Spark3.1.2 Standalone高可用HA分布式部署(含pyspark)
spring security 验证用户登录以及获取当前登录的用户信息
Halcon实例转OpenCvSharp(C# OpenCV)实现--瓶口缺陷检测(附源码)
Parsing error: No Babel config file detected for xxx Either disable config file checking...报错解决方法
基于yolov4作者最新力作yolov7目标检测模型实现火点烟雾检测
新一代人工智能产业技术创新战略联盟和开放原子开源基金会举行战略合作签约仪式