Python数据分析(1)股票K线图绘制
2021-06-22 本文已影响0人
蛋肥之力
前言
- 阔别多日,终于有时间重新来学习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线图绘制、子画布布局调整等方法。