使用Python绘制股票交易图形
使用Python绘制股票交易图形
本文主要介绍使用Python及常用数据分析库,绘制金融产品(如股票)的交易图形,主要涉及折线图、柱状图、饼图。
关联知识点
该文涉及到以下知识点:
- Numpy、Pandas、Matplotlib绘图库;
- 时间序列;
- 数据聚合;
- 列表推导式
准备工作
1,从网易财经(https://money.163.com/)上搜索“贵州茅台”(股票代码:600519),在“个股行情”界面(http://quotes.money.163.com/trade/lsjysj_600519.html#01b07),点击“下载”按钮。
2,选择“收盘价”、“成交量”、“成交金额”这几个关键字段,然后点击下载。
3,下载后的数据存为"600519-2020.csv"文件,打开文件观察下载的数据。
4,点击“文件”->“另存为”,将"600519-2020.csv"文件另存为"600519-2020.xlsx"文件
数据载入
# 使用Python绘制股票价格走势图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
# 载入贵州茅台600519的交易数据
data = pd.read_excel('600519-2020.xlsx','600519-2020')
dt = data.loc[data['名称']=='贵州茅台',['日期','收盘价','成交量','成交金额']]
#print(dt)
任务一:绘制2020年1月1日至2020年12月31日的价格走势
# 将日期转化为时间序列
dt['日期'] = pd.to_datetime(data['日期'])
# 将日期升序排列
dt = dt.set_index('日期').sort_index(ascending=True) #日期升序
#print(dt)
# 筛选2020年1月1日至2020年12月31日的收盘价格
dta = dt["2020 01 01":"2020 12 31"]
#print(dta)
y1 = dta['收盘价']
x1 = range(len(y1))
# 绘制收盘价格走势图
plt.figure(1)
plt.plot(x1,y1)
plt.xlabel(u'日期')
plt.ylabel(u'收盘价')
plt.title(u'2020年股票收盘价走势图')
plt.show()
任务二:绘制2020年1月至2020年12月的成交量柱状图
# 任务二:绘制2020年1月至2020年12月的成交量柱状图
dtb = dta.resample('m').sum()
#print(dtb)
y2 = dtb['成交量']
x2 = range(len(y2))
# 绘制成交量柱状图
plt.figure(2)
plt.bar(x2,y2)
plt.xlabel(u'月份')
plt.ylabel(u'成交额')
plt.title(u'2020年股票成交额柱状图')
plt.show()
任务三:绘制2020年1月至2020年12月的成交额饼图
y3 = dtb['成交金额']
list1 = list(map(str,range(1,13)))
list1 = [i + "月" for i in list1]
# 绘制成交额饼图
plt.figure(3)
plt.pie(y3,labels = list1,autopct='%1.2f%%') # 保留后两位
plt.title(u'2020年股票成交额饼图')
plt.show()
任务四:绘制2020年1月至2020年12月的5日股票价格移动平均线
dtc = dta.resample('5d').mean()
y4 = dtc['成交量']
x4 = range(len(y4))
# 绘制收盘价格平均线
plt.figure(4)
plt.tight_layout()
plt.plot(x4,y4)
plt.xlabel(u'5日')
plt.ylabel(u'收盘价平均线')
plt.title(u'2020年股票收盘价移动平均线')
plt.show()