Python财经实践,股票数据获取及可视化展示

来源:志斌的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')

查看一下获取的数据:

Python财经实践,股票数据获取及可视化展示_第1张图片

其中,date为交易日期,open为开盘价,close为收盘价,high为最高价,low为最低价,volume为成交量,code为股票代码。

02

绘制股价走势图

上面我们已经获取到了股票的数据,那么现在我们就可以开始进行可视化图表绘制了。

在绘图之前,我们需要对数据进行简单的处理,要先将date设置成行索引,代码如下:

df = df.set_index('date')

查看一下现在数据样式:

Python财经实践,股票数据获取及可视化展示_第2张图片

我们来进行绘制,代码如下:

plt.rcParams['font.sans-serif'] = ['SimHei']  #解决中文乱码问题
df['close'].plot(title='股价走势图')
plt.show()

股价走势图:

Python财经实践,股票数据获取及可视化展示_第3张图片

我们还可以尝试用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()

股价走势图:

Python财经实践,股票数据获取及可视化展示_第4张图片

03

绘制K线图

Python财经实践,股票数据获取及可视化展示_第5张图片

(来源:东方财富网)

我们在看股票的时候,经常会遇到上面这种K线图,别看它花里胡哨的,其实很容易绘制的,下面我们就一起来看看,这种K线图应该怎么绘制。

首先,先来给大家介绍一点K线图的基本知识。

b2c779a2376e09328d98be695f82d9ed.gif

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条数据看一下结果:

Python财经实践,股票数据获取及可视化展示_第6张图片

从上面,我们可以看到,文本数据的日期,都转化为了数字格式。

现在我们可以开始绘制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线图:

Python财经实践,股票数据获取及可视化展示_第7张图片

但是,我们与上图进行对比后发现,这个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线图+均线图:

Python财经实践,股票数据获取及可视化展示_第8张图片

04

拓展

Python财经实践,股票数据获取及可视化展示_第9张图片

K线图和均线图会绘制后,我们就可来学习绘制每日成交量柱形图了,它们三张图往往是一起出现的。核心代码如下:

#每日成交量柱形图绘制部分
ax2.bar(df_arr[:,0],df_arr[:,5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()

每日成交量柱形图:

Python财经实践,股票数据获取及可视化展示_第10张图片

05

小结

1. 本文详细的介绍了如何绘制股票K线图+均线图,并且拓展了每日成交量柱形图的绘制方式,感兴趣的读者可以尝试复现一下。

2. 本文仅供学习参考,不做它用。

-------- End --------

7b67a8052296b4edb7f76f6cdcc55a5c.png

精选资料

回复关键词,获取对应的资料:

关键词 资料名称
600 《Python知识手册》
md 《Markdown速查表》
time 《Python时间使用指南》
str 《Python字符串速查表》
pip 《Python:Pip速查表》
style 《Pandas表格样式配置指南》
mat 《Matplotlib入门100个案例》
px 《Plotly Express可视化指南》

精选视频

可视化: Plotly Express

财经: Plotly在投资领域的应用 | 绘制K线图表

排序算法: 冒泡排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 | 插入排序 | 希尔排序 | 计数排序 | 桶排序

Python财经实践,股票数据获取及可视化展示_第11张图片

你可能感兴趣的:(可视化,乱码,python,数据可视化,数据分析)