持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 3 天,点击查看活动详情
1 前言
Python 数据分析不仅有 Pandas 和 Numpy 这两个数据分析利器,还有 matplotlib 这样的数据图形展示利器,在本文中将进行数据展示的分析,本文会以上证指数为例,利用 Pandas 和 talib 进行年线数据计算,最终展示年线和收盘价数据。在这个过程中,会遇到中文乱码的情况,分为 windows 和 mac 两种情况,在文中都会有响应的解决方案。
2 数据获取
在进行数据获取时,采用东方某富网站上上证指数的 k 线数据,根据 k 线数据计算均线数据,最后将数据进行提取并使用 matplotlib 进行数据展示。
获取上证指数的代码如下图所示:
使用 requests 获取上证指数的 k 线数据
将数据进行 Pandas 转换, 由于数据列 date 是字符串类型,使用 to_datetime 进行数据类型转换。
最终将数据进行合并处理,然后进行返回。
3 数据计算
在进行数据均线计算时,使用 talib 进行均线进行计算,在进行计算时,需要使用收盘价进行计算均线数据。
# 采用 MA 的方式即可计算, timeperiod 周期即可
data["ma250"] = talib.MA(data["close"], timeperiod=250)
在进行数据计算完成后,需要提取需要展示的数据,然后只获取 2021年之后的数据进行展示。
关键的步骤如下
# 只获取需要展示的数据
dat_lst = data_list[['date', 'close', 'ma250']]
# 采用 data_list.date.ge 的方式来截取数据
dat_lst = dat_lst[dat_lst.date.ge('2021-01-01')]
# 如果想获取收盘价与年线的差值,进行如下计算即可
dat_lst['diff'] = dat_lst['close'] - dat_lst['ma250']
# 将时间序列进行格式化,转换成字符串
time_list = dat_lst["date"].apply(lambda x: x.strftime('%Y%m%d')[2:]).tolist()
最后,在数据展示时,由于中文会产生乱码,需要采用如下配置
import matplotlib as mpl
# mac 环境下的配置
mpl.rcParams['font.sans-serif'] = ["Arial Unicode MS"]
# windows 环境下的配置
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
最终的展示结果如下图所示:
4 总结
在本文中,主要介绍了 matplotlib 的数据绘图方式,以及数据图例和标题的乱码问题。在后续的数据分析和挖掘过程中,将会起到数据图形展示的作用。