利用韩国银行 API 实现经济数据可视化--使用 Python 轻松掌握

利用韩国银行 API,您可以轻松检索和可视化经济数据,尤其是在使用 Python 进行数据分析和高级可视化时。在本文章中 如何使用韩国银行开放式 API 并从数据可视化中获得洞察力下文将详细介绍。
什么是韩国银行开放式 API?
韩国银行应用程序接口见 为开发人员和研究人员提供韩国银行经济和统计系统(ECOS)数据的服务。.应用程序接口允许您使用 实时经济数据直接导入。例如,您可以轻松导入并分析韩元/美元汇率、KOSPI 指数、外汇储备等。
如何使用韩国银行 API
1. 样本数据查询(用于测试)
样本数据是用于简单测试的示例数据,无需验证密钥。您可以使用以下 URL 检索前 100 个指标中 10 个指标的示例数据。复制下面的 URL 并将其输入浏览器地址栏,即可看到以下内容。
10 个数据查询 URL 示例
https://ecos.bok.or.kr/api/KeyStatisticList/sample/xml/kr/1/10
2. 使用验证密钥获取前 100 个指标
查看所有 100 项指标数据 发出验证密钥您应该收到
- 验证密钥的发放方式: 韩国银行 ECOS 网站并点击右上角的"申请验证密钥"申请 OpenAPI 验证密钥。完成申请后,认证密钥将发送到您的电子邮箱,您可以在网站的 "我的页面 "菜单中查看。
- 使用验证密钥的示例 在下面 URL 的 "验证密钥 "部分输入经过验证的验证密钥,然后通过浏览器查看,就能看到 xml 格式的前 100 名统计信息,如下图所示。
https://ecos.bok.or.kr/api/KeyStatisticList/인증키/xml/kr/1/100
用 Python 将经济数据可视化
现在,让我们使用 Python 从韩国银行 API 获取数据,并创建一个 Python 可视化界面,如下图所示。

Python 代码示例
导入请求
import pandas as pd
import matplotlib.pyplot as plt
import xml.etree.ElementTree as ET
配置 # 韩国银行 API URL 和身份验证密钥
url = "https://ecos.bok.or.kr/api/KeyStatisticList/MN16GNV2T0LWMVGWNQ9K/xml/kr/1/100"
调用 # API 并收集数据
response = requests.get(url)
data = response.text
解析 # XML 数据并提取所需数据
root = ET.fromstring(data)
行 = []
for row in root.findall("row"):
indicator = row.find("KEYSTAT_NAME").text
if indicator in ["KRW/Dollar exchange rate (closing)", "Foreign exchange reserves"]:
rows.append({
"指标":indicator、
"value":float(row.find("DATA_VALUE").text)、
"单位":row.find("UNIT_NAME").text、
"日期": pd.to_datetimepd.to_datetime(row.find("CYCLE").text, errors='coerce')
})
转换为 # 数据帧
df = pd.DataFrame(rows)
# 转换韩文 → 英文标签
df['indicator_english'] = df['indicator'].replace({
"韩元/美元汇率(收盘价)":"韩元/美元汇率": "韩元/美元汇率"、
"外汇储备":"外汇储备
})
检查 # 数据帧
print(df)
使用 # 双 y 轴进行可视化
fig, ax1 = plt.subplots(figsize=(10, 6))
# 第一个 y 轴:韩元/美元汇率
exchange_rate_data = df[df['indicator'] =="KRW/Dollar exchange rate (closing price)"]
ax1.bar(exchange_rate_data['indicator_english']、
exchange_rate_data['value']、
color='blue', label="韩元/美元汇率")
ax1.set_xlabel("Indicator")
ax1.set_ylabel("Value (KRW)", color='blue')
ax1.tick_params(axis='y', labelcolour='blue')
# 在第一个 Y 轴条形图上方添加标签
for i, value in enumerate(exchange_rate_data['value']):
ax1.text(i, value + (value * 0.02), f"{value:,.1f}", ha='center', color='blue')
# 第二根 y 轴:外汇储备
ax2 = ax1.twinx()
reserves_data = df[df['indicator'] =="foreign exchange reserves"].
ax2.bar(reserves_data['indicator_english']、
reserves_data['value']、
color='红色', label="外汇储备", alpha=0.7)
ax2.set_ylabel("Value (Thousand USD)", color='red')
ax2.tick_params(axis='y', labelcolour='red')
# 在第二个 Y 轴条形图上方添加标签
for i, value in enumerate(reserves_data['value']):
ax2.text(i + 1, value + (value * 0.02), f"{value:,.0f}", ha='center', color='red')
# 图表标题和样式
plt.title(f "Bank of Korea Key Indicators ({df['date'].iloc[0].date()})")
plt.tight_layout()
plt.show()组织起来
利用韩国银行 API,您可以轻松地收集经济数据,并使用 Python 实现高级可视化。 特别是,可视化结果可以帮助您更直观地了解经济流动。数据分析和可视化是经济决策的重要工具,因此我们鼓励您尝试一下。
如果您对使用其他类型的 API 进行 Python 分析感兴趣,请查看 使用 Python 和 CryptoCompare API 分析 30 天比特币美元图表 看看这篇文章!
#Python 可视化代码详情
1. 导入图书馆
导入请求 import pandas as pd import matplotlib.pyplot as plt import xml.etree.ElementTree as ET
- 要求用于通过 HTTP 请求与 API 通信。
- 大熊猫:一个功能强大的数据操作和分析库。
- matplotlib.pyplot:数据可视化库
- xml.etree.ElementTree用于解析 XML 数据。
2. 设置应用程序接口 URL
url = "https://ecos.bok.or.kr/api/KeyStatisticList/MN16GNV2T0LWMVGWNQ9K/xml/kr/1/100"设置韩国银行 API 的 URL。该 URL 以 XML 格式提供统计数据。
3. 收集数据
response = requests.get(url) data = response.text
requests.get(url)向应用程序接口发出 GET 请求,并将响应发送到回应在文件中。response.text以字符串形式获取 XML 数据。4. 解析 XML 数据
根 = ET.fromstring(data) 行 = [] for row in root.findall("row"): indicator = row.find("KEYSTAT_NAME").text if indicator in ["KRW/Dollar exchange rate (closing)", "Foreign exchange reserves"]: rows.append({ "指标":indicator、 "value":float(row.find("DATA_VALUE").text)、 "单位":row.find("UNIT_NAME").text、 "日期": pd.to_datetimepd.to_datetime(row.find("CYCLE").text, errors='coerce') })
- 解析 XML 数据以创建 ElementTree 对象。
行数来存储我们需要的信息。- 观点
<行元素,重复度量名称 (KEYSTAT_NAME)、值 (数据值单位 (单位名称)、日期 (循环)的文件。- 在此,我们只提取 "韩元/美元汇率(收盘)"和 "外汇储备",并将其添加到列表中。
5. 创建数据帧
df = pd.DataFrame(rows)将收集到的数据转换为 pandas DataFrame,以便于操作。
6. 添加英文标签
df['indicator_english'] = df['indicator'].replace({ "KRW/USD Exchange Rate (closing)":"韩元/美元汇率"、 "外汇储备":"外汇储备 })在 DataFrame 中添加新列,将韩文指标名称转换为英文。
7. 检查 DataFrame
print(df)将 DataFrame 的内容输出到控制台,验证收集到的数据。
8 使用双 y 轴进行可视化
fig, ax1 = plt.subplots(figsize=(10, 6))这是您创建人物和分镜头的地方。
斧头1用于绘制第一个数据集。第一个 Y 轴:绘制韩元/美元汇率图
exchange_rate_data = df[df['indicator'] =="KRW/Dollar exchange rate (closing)"] ax1.bar(exchange_rate_data['indicator_english']、 exchange_rate_data['value']、 color='blue', label="韩元/美元汇率")使用蓝色柱形图创建韩元/美元汇率柱形图。
在第一个 Y 轴柱形图上方添加一个标签
for i, value in enumerate(exchange_rate_data['value']): ax1.text(i, value + (value * 0.02), f"{value:,.1f}", ha='center', color='blue')该代码会在每个条形图上方显示相应的数值。
值 + (值 * 0.02)用于将标签置于值的稍上方。f"{value:,.1f}"将数值分隔成千位,并将数值显示到小数点后第一位。第二个 y 轴:绘制外汇储备图
ax2 = ax1.twinx() reserves_data = df[df['indicator'] =="Foreign exchange reserves"]. ax2.bar(reserves_data['indicator_english']、 reserves_data['value']、 color='红色', label="外汇储备", alpha=0.7)在这里,我们使用的是第二个 y 轴 (
ax2)创建一个斧头1用红色条形图表示外汇储备。在第二个 Y 轴柱形图上方添加标签
for i, value in enumerate(reserves_data['value']): ax2.text(i + 1, value + (value * 0.02), f"{value:,.0f}", ha='center', color='red')它还会在第二个 Y 轴的条形图上方显示该值。
i + 1调整外汇储备状况、值 + (值 * 0.02)来调整标签的位置。图表标题和样式
plt.title(f "Bank of Korea Key Indicators ({df['date'].iloc[0].date()})") plt.tight_layout() plt.show()为图表设置标题、调整布局并显示图表。






