Python数据分析(1)股票K线图绘制

前言

  • 阔别多日,终于有时间重新来学习python,这次学习的是数据分析,蛋肥打算先通过一个股票K线图的绘制,回忆一些相关知识点。

准备

时间:2021/06/23
系统环境:Windows 10
所用工具:Jupyter Notebook\Python 3.0
涉及的库:tushare\matplotlib\datetime\mpl_finance

获取基础数据

蛋肥想法:先通过tushare获取茅台股价数据,再从中提取K线、均线、成交量等相关的数据。

#引入获取股价数据的库
import tushare as ts
#获取茅台(600519)数据
df=ts.get_k_data("600519","2021-01-01","2021-06-23")

#绘制K线图的candlestick_ochl()函数只能读取数组格式的数据,并且其中的日期数据要为特定的数字格式
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

#将DataFrame转化为二维数组
df_arr=df.values
#利用date_to_num()转换数据格式
df_arr[:,0]=date_to_num(df_arr[:,0])
#构造5日均线、10日均线
df["MA5"]=df["close"].rolling(5).mean()
df["MA10"]=df["close"].rolling(10).mean()

数据可视化

参考资料
如何让子画布高度不一样

import matplotlib.pyplot as plt
#引入绘制K线图的库
import mpl_finance as mpf

#画图四件套:显示、矢量、中文、负号
%matplotlib inline
%config InlineBackend.figure_format="svg"
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

#绘制画布尺寸
plt.figure(figsize=(12,8))

#设置ax1子画布,运用subplot2grid使画布高度不一
ax1=plt.subplot2grid((3,1),(0,0),rowspan=2)
plt.title("茅台(600519)")
plt.ylabel("价格")

#绘制K线图
mpf.candlestick_ochl(ax1,df_arr,width=0.6,colorup="r",colordown="g",alpha=1.0)
#绘制均线
plt.plot(df_arr[:,0],df["MA5"])
plt.plot(df_arr[:,0],df["MA10"])
#显示网格
plt.grid(True)
#调整横坐标为日期格式
ax1.xaxis_date()

#设置ax2子画布,运用subplot2grid使画布高度不一
ax2=plt.subplot2grid((3,1),(2,0),rowspan=1)
plt.ylabel("成交量")

#绘制每日成交量柱形图
plt.bar(df_arr[:,0],df_arr[:,5])
#显示网格
plt.grid(True)
#调整横坐标为日期格式
ax2.xaxis_date()

#导出图表
plt.savefig(r"C:\Users\Archer\Desktop\my_fig.png")
#仅显示图片,不显示格式
plt.show()

总结

  • 代码整体较为常规,主要了解了股价数据获取、K线图绘制、子画布布局调整等方法。

你可能感兴趣的:(Python数据分析(1)股票K线图绘制)