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

한국은행 API 홈페이지 갈무리 이미지
(图片来自韩国银行 API 主页)

利用韩国银行 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
10개의 샘플 데이터 조회결과 캡쳐 이미지
(10 个样本数据查询结果的图像截图)

2. 使用验证密钥获取前 100 个指标

查看所有 100 项指标数据 发出验证密钥您应该收到

  • 验证密钥的发放方式: 韩国银行 ECOS 网站并点击右上角的"申请验证密钥"申请 OpenAPI 验证密钥。完成申请后,认证密钥将发送到您的电子邮箱,您可以在网站的 "我的页面 "菜单中查看。
  • 使用验证密钥的示例 在下面 URL 的 "验证密钥 "部分输入经过验证的验证密钥,然后通过浏览器查看,就能看到 xml 格式的前 100 名统计信息,如下图所示。
https://ecos.bok.or.kr/api/KeyStatisticList/인증키/xml/kr/1/100
100대 통계지표 데이터 조회결과 캡쳐 이미지
(100 个顶级度量数据查询结果的图片截图)

用 Python 将经济数据可视化

现在,让我们使用 Python 从韩国银行 API 获取数据,并创建一个 Python 可视化界面,如下图所示。

한국은행 API 활용한 Python 시각화 결과 이미지
(使用韩国银行应用程序接口的 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()

为图表设置标题、调整布局并显示图表。

类似文章