来源:志斌的python笔记
今天跟大家分享一下,如何将获取股票数据以及将数据进行可视化展示。
01
股票数据获取
这次跟大家分享一种不需要爬虫就可以获取股票数据的方式。Python有一个第三方库—Tushare库,我们使用它就可以轻松的获取股票的数据。
因为它是第三方库,所以我们需要用pip对它进行安装。
pip install Tushare
安装好以后,我们就可以尝试使用它来进行获取数据了,代码如下:
import tushare as ts
df = ts.get_k_data('000002',start='2009-01-01',end='2019-01-01')
df.to_excel('股价数据.xlsx')
查看一下获取的数据:
其中,date为交易日期,open为开盘价,close为收盘价,high为最高价,low为最低价,volume为成交量,code为股票代码。
02
绘制股价走势图
上面我们已经获取到了股票的数据,那么现在我们就可以开始进行可视化图表绘制了。
在绘图之前,我们需要对数据进行简单的处理,要先将date设置成行索引,代码如下:
df = df.set_index('date')
查看一下现在数据样式:
我们来进行绘制,代码如下:
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文乱码问题
df['close'].plot(title='股价走势图')
plt.show()
股价走势图:
我们还可以尝试用matplotlib库来进行绘制,代码如下:
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决“-”显示为方块的问题
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.title('股价走势图')
plt.show()
股价走势图:
03
绘制K线图
(来源:东方财富网)
我们在看股票的时候,经常会遇到上面这种K线图,别看它花里胡哨的,其实很容易绘制的,下面我们就一起来看看,这种K线图应该怎么绘制。
首先,先来给大家介绍一点K线图的基本知识。
K线图有一个别名叫蜡烛图,它主要是通过股票的最高价、开盘价、最低价和收盘价进行绘制的。K线分为两种,如果当天的收盘价高于开盘价,则称为阳线,绘制成红色;同理,如果当天收盘价低于开盘价,则称为阴线,绘制成绿色。
对K线图有了简单的了解,我们就开始进行绘制吧。Python绘制K线图并不难,主要是借用了mpl_finance库,这里我们安装一下这个库,命令如下:
pip install mpl_finance
在进行绘制之前,我们需要先对日期数据进行处理,因为mpl_finance库读取日期数据有特定的格式,代码如下:
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
df_arr[:,0] = date_to_num(df_arr[:,0])
我们打印一下前10条数据看一下结果:
从上面,我们可以看到,文本数据的日期,都转化为了数字格式。
现在我们可以开始绘制K线图了,代码如下:
figsize,axis = plt.subplots(figsize=(15,6))
mpf.candlestick_ochl(axis,df_arr,width=0.6,colorup='red',colordown='green',alpha=1.0)
plt.grid(True)
ax.xaxis_date()
plt.title('K线图')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决“-”显示为方块的问题
plt.show()
K线图:
但是,我们与上图进行对比后发现,这个K线图还缺少均线图,所以我们再来给它加上均线图,核心代码如下:
# 绘图部分
fig,ax =plt.subplots(figsize=(15,6))
mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup='red',colordown='green',alpha=1.0) # 绘制K线图
plt.plot(df_arr[:,0],df['MA5'])
plt.plot(df_arr[:,0],df['MA10'])
plt.grid(True)
ax.xaxis_date()
plt.title('东方财富网')
plt.xlabel('日期')
plt.ylabel('价格')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决“-”显示为方块的问题
plt.show()
K线图+均线图:
04
拓展
K线图和均线图会绘制后,我们就可来学习绘制每日成交量柱形图了,它们三张图往往是一起出现的。核心代码如下:
#每日成交量柱形图绘制部分
ax2.bar(df_arr[:,0],df_arr[:,5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()
每日成交量柱形图:
05
小结
1. 本文详细的介绍了如何绘制股票K线图+均线图,并且拓展了每日成交量柱形图的绘制方式,感兴趣的读者可以尝试复现一下。
2. 本文仅供学习参考,不做它用。
-------- End --------
回复关键词,获取对应的资料:
关键词 | 资料名称 |
---|---|
600 | 《Python知识手册》 |
md | 《Markdown速查表》 |
time | 《Python时间使用指南》 |
str | 《Python字符串速查表》 |
pip | 《Python:Pip速查表》 |
style | 《Pandas表格样式配置指南》 |
mat | 《Matplotlib入门100个案例》 |
px | 《Plotly Express可视化指南》 |
可视化: Plotly Express
财经: Plotly在投资领域的应用 | 绘制K线图表
排序算法: 冒泡排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 | 插入排序 | 希尔排序 | 计数排序 | 桶排序