0
1

More than 1 year has passed since last update.

各国の名目GDPの推移(静的グラフ)

Last updated at Posted at 2023-05-05

各国の名目GDPデータをWorld Bankから取得してグラフ化するpythonプログラムがとりあえずできたので、備忘録として保存。

データの取得はwbdataを使いたかったが、どうしてもうまくいかなかったので、それは別の機会に。

グラフは、matplotlib.pyplotを使った静的なグラフ。plotlyを使ったインタラクティブなグラフも別の機会に。

import requests
import json
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt

def fetch_gdp_data(country_code):
    gdp_data = {}
    for page in range(1, 3):  # ページを指定してデータを取得
        url = f"https://api.worldbank.org/v2/country/{country_code}/indicator/NY.GDP.MKTP.CD?format=json&page={page}"
        response = requests.get(url)
        data = json.loads(response.text)
        
        for entry in data[1]:
            date = datetime.strptime(entry["date"], "%Y")
            value = entry["value"]
            if value is not None:
                gdp_data[date] = value
                
    return pd.Series(gdp_data)

# 国のISOコードを設定(G7+中印)
countries = {
    'USA': 'United States',
    'CHN': 'China',
    'JPN': 'Japan',
    'DEU': 'Germany',
    'IND': 'India',
    'GBR': 'United Kingdom',
    'FRA': 'France',
    'ITA': 'Italy',
    'CAN': 'Canada',
}

# データフレームの作成
gdp_data = pd.DataFrame({code: fetch_gdp_data(code) for code in countries.keys()})

# インデックスを datetime 型に変換
gdp_data.index = pd.to_datetime(gdp_data.index)

# 欠損値の処理
gdp_data_filled = gdp_data.fillna(method='ffill').fillna(method='bfill')

# グラフを描画
plt.figure(figsize=(14, 8))
for country in countries:
    plt.plot(gdp_data_filled[country], label=countries[country])

plt.title('Nominal GDP (current USD) of G7 countries, China, and India (1960-2021)')
plt.xlabel('Year')
plt.ylabel('GDP (current USD)')
plt.legend()
plt.grid()
plt.show()

Google Colabでこのコードを実行すると、以下のグラフが出来上がった。

nominal GDP.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1