Python绘制M1-M2货币增速对比图:爬虫获取与可视化实战

Miles
Miles
发布时间:2026-10-15 | 4人浏览过
原创

本文详解如何使用Python从东方财富网抓取M0、M1、M2货币供应量数据,并通过Matplotlib库绘制增速对比图。重点展示M1与M2的差值区间颜色填充,直观反映经济活跃度与流动性变化,适合初学者学习数据获取、处理及可视化全流程。

前言

前文已介绍过PPI与CPI的图形绘制方法,本文将继续分享另一个与经济密切相关的货币数据指标M0-M1-M2。本文仍采用爬虫技术获取数据,随后利用matplotlib工具将m0-m1-m2数据在同一图表中展示,并通过颜色填充来区分差额部分。对于初学者而言,本文将涵盖python的基础知识、网络爬虫技术以及图形绘制技巧。

M0-M1-M2 数据获取

在获取数据之前,先简要说明这些指标背后的含义:

  • 1. M0:指流通中的现金。
  • 2. M1:即狭义货币,计算公式为 M1 = M0 + 活期存款。
  • 3. M2:即广义货币,计算公式为 M2 = M1 + 居民储蓄存款 + 单位定期存款 + 单位其他存款 + 证券公司客户保证金。

M1是衡量货币流动性和经济活跃程度的重要指标。M1增加通常代表投资者信心增强,经济活跃度提高。当M1增速大于M2时,意味着居民和企业的交易活跃,经济个体盈利能力较强,经济景气度上升;反之,如果M1小于M2,则可能表明经济景气度和盈利能力下降。

为了确保数据的权威性,我们选择从东方财富网获取数据。以下是页面访问地址:

# 货币供应量数据访问地址
https://data.eastmoney.com/cjsj/hbgyl.html

货币供应量的数据来源如下图所示,本文仅获取月份数据和同比增长率,绝对值数据在此不做获取。

既然明确了数据来源,如何高效获取数据呢?是否要复制页面内容到Excel再解析?显然这不符合程序员的风格。注意表格下方的分页功能,这表明后台通过Ajax与服务器通信。通过观察网络请求,可以发现以下接口可以获取我们所需的数据:

# 货币供应量接口
https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=200&mkt=11
# 这里也同样贴了上一篇中 ppi 和 cpi 的接口,会发现都是一样的,只不过mkt的参数不一样
# ppi 数据和cpi 数据
https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=22
https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=19

数据获取部分,我们采用原理性操作,使用python语言进行开发,并通过requests库来执行数据抓取:

body = requests.get(req_url).text
body = body.replace("(", "").replace(")", "")
data_list = body.split("","")
# 定义数据
date_list, m0_list, m1_list, m2_list = [], [], [], []
for node in data_list:
    node = node.replace("]", "").replace("[", "").replace("\"", "")
    arr_list = node.split(",")
    date = arr_list[0]
    if date < "2011-01-01":
        continue
    # 时间数据
    date_list.append(date)
    # 数据操作存储
    m2_list.append(float(arr_list[2]))
    m1_list.append(float(arr_list[5]))
    m0_list.append(float(arr_list[8]))
    # 0 时间
    # 1-m2总量 2-m2同比增速 3-环比增速
    # 4-m1总量 5-m1同比增速 6-环比增速
    # 7-m0总量 8-m0同比增速 9-环比增速
    print(node)

最终获取到的数据结果如下图所示:

PPI-CPI 图形绘制

在绘制图形之前,需要对原始数据进行预处理:

  • 1. 数据加工:提取需要展示的关键数据,包括日期和同比数据,并转换数据格式。
  • 2. 数据处理:按照M0、M1、M2及时间的列表结构来获取数据。
  • 3. 准备工作:继续使用np.asarray创建数据数组,为图形绘制做准备。

基于上述思路,数据处理的代码如下所示:

关于图形的绘制,需注意以下几点:

  • 1. 图表中需展示M1和M2的数据情况,并添加图例进行标识。
  • 2. 需体现数据的差值区间和范围,对差值部分进行颜色填充以作区分。

经过上述编码处理,最终得到了货币供应量增速对比图形如下:

M0-M1-M2 货币增速对比图:

M1-M2 货币增速对比及差异图:

总结

本文介绍了简单的python爬虫技术,并使用numpy进行了基础的数据处理,最终利用matplotlib完成了图形绘制,实现了直观展示货币供应量增速的目的。通过接口方式获取数据,可以随时获取最新数据并重新绘制图形,省去了重复抓取数据的步骤。

到此这篇关于Python数据分析之绘制M1-M2数据的文章就介绍到这了,更多相关Python M1-M2绘制内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表