看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
贷款市场报价利率(LPR) 是指各银行根据其对最优质客户的贷款利率,结合公开市场操作利率加点报价,由中国人民银行授权的全国银行间同业拆借中心计算并发布的利率。实际贷款利率则根据借款人信用、抵押、贷款期限等因素,在LPR基础上加减点进行调整。
为了为分析 LPR 的变化数据,我们找到了一个长期更新 LPR 数据的网址:https://www.boc.cn/fimarkets/lilv/fd32/201310/t20131031_2591219.html ,然后需要用代码将表格里的数据爬取出来,并对数据进行处理,最后绘制一个折线图,图中有代表 1 年期和 5 年期以上利率的两条线。
需求中的数据是一个 HTML 表格数据,你完全可以直接使用 pandas.read_html()
来读取网页中的表格数据,它会自动从网页中提取所有表格并返回一个包含 DataFrame 的列表。这样可以避免手动解析 HTML 内容。
接着将带有 % 号的字符串转换为纯数字,最后绘制折线。
根据思路,我们的代码如下。先读取数据:
import pandas as pd
url = 'https://www.boc.cn/fimarkets/lilv/fd32/201310/t20131031_2591219.html'
dfs = pd.read_html(url)
df = dfs[0]
df
'''
LPR报价 1年期 5年期以上
0 2024-10-21 3.10% 3.60%
1 2024-09-20 3.35% 3.85%
2 2024-08-20 3.35% 3.85%
3 2024-07-22 3.35% 3.85%
4 2024-06-20 3.45% 3.95%
.. ... ... ...
58 2019-12-20 4.15% 4.80%
59 2019-11-20 4.15% 4.80%
60 2019-10-21 4.20% 4.85%
61 2019-09-20 4.20% 4.85%
62 2019-08-20 4.25% 4.85%
[63 rows x 3 columns]
'''
对数据进行处理:
(
df.set_index('LPR报价')
.map(lambda x: x.replace('%', '') )
.astype(float)
.sort_index(ascending=True)
)
'''
1年期 5年期以上
LPR报价
2019-08-20 4.25 4.85
2019-09-20 4.20 4.85
2019-10-21 4.20 4.85
2019-11-20 4.15 4.80
2019-12-20 4.15 4.80
... ... ...
2024-06-20 3.45 3.95
2024-07-22 3.35 3.85
2024-08-20 3.35 3.85
2024-09-20 3.35 3.85
2024-10-21 3.10 3.60
[63 rows x 2 columns]
'''
绘图,并处理中文显示的问题:
import matplotlib.pyplot as plt
import matplotlib
# 设置支持中文的字体(以 SimHei 为例)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体为 SimHei
matplotlib.rcParams['axes.unicode_minus'] = False # 解决负号显示为乱码的问题
(
df.set_index('LPR报价')
.map(lambda x: x.replace('%', '') )
.astype(float)
.sort_index(ascending=True)
.plot()
)
# <Axes: xlabel='LPR报价'>
在 JupyterLab 上显示如下图形:
这样就完成了需求。
(完)
更新时间:2024-11-05 15:29:55 标签:pandas python lpr 可视化 贷款