【Pandasデータ取得術】pandas-datareaderで株価・人口データを簡単取得!API連携で分析を加速 📈📊


 

データ分析を行う際、社内データだけでなく、公開されている様々な外部データと連携させることで、より深い洞察やトレンドの発見が可能になります。特に、株価のような金融データや、人口統計のような経済・社会データは、多くの分析シナリオで不可欠な要素となります。

しかし、これらのデータを手動でダウンロードしたり、複雑なAPI連携のコードを書いたりするのは非常に手間がかかります。そこで活躍するのが、Pandasと連携して外部データソースから直接データを取得できる強力なライブラリ、**pandas-datareader**です。このライブラリを使えば、数行のコードで株価や人口統計といった多様なデータを簡単にDataFrameとして取得できます。

この記事では、pandas-datareaderの基本的なインストールと使い方から、主要なデータソースからのデータ取得方法(株価、人口、為替レートなど)、そして知っておくと便利な応用例まで、短いサンプルコードと丁寧な解説を交えてご紹介します。


 

pandas-datareaderとは?なぜ外部データが必要なのか?

 

**pandas-datareader**は、Pandas DataFrame/Seriesオブジェクトとして、様々なインターネット上のデータソースからデータを読み込むためのライブラリです。金融データ(Yahoo Finance, Google Financeなど)や経済データ(FRED, World Bankなど)に簡単にアクセスできます。

なぜデータ分析に外部データが必要なのでしょうか?

  • コンテキストの追加: 自社のデータだけでは見えない外部環境の影響を分析できます。(例: 株価の変動が自社売上に与える影響)

  • トレンド分析の強化: マクロ経済指標(GDP、金利など)や社会トレンド(人口変動、消費動向など)を取り入れることで、より包括的な予測や分析が可能になります。

  • 比較分析: 競合他社のデータや業界全体のトレンドと自社のパフォーマンスを比較できます。

  • 機械学習モデルの精度向上: 外部データを特徴量として追加することで、モデルの予測精度を向上させられる場合があります。


 

準備: pandas-datareaderのインストール

 

まず、pandas-datareaderライブラリがインストールされているか確認しましょう。まだの場合は、以下のコマンドで簡単にインストールできます。

Bash
 
pip install pandas-datareader

 

1. 株価データの取得(Yahoo Finance)

 

金融データはpandas-datareaderの最も一般的な用途の一つです。Yahoo Financeは多くの株価データを提供しており、これを簡単に取得できます。

 

特定の銘柄の株価データを取得

 

web.DataReader()関数を使用し、銘柄コード、データソース、取得期間を指定します。

Python
 
import pandas_datareader.data as web
import datetime as dt

# 取得開始日と終了日を設定
start_date = dt.datetime(2023, 1, 1)
end_date = dt.datetime(2023, 12, 31)

# Apple (AAPL) の株価データを取得
df_aapl = web.DataReader('AAPL', 'yahoo', start_date, end_date)
print("Apple (AAPL) の株価データ:\n", df_aapl.head())
print("\nデータ型:\n", df_aapl.dtypes)

解説:

  1. web.DataReader(): pandas_datareader.dataモジュールからこの関数を呼び出します。

  2. 'AAPL': 取得したい銘柄のティッカーシンボル(銘柄コード)を指定します。

  3. 'yahoo': データソースとしてYahoo Financeを指定します。他にも'fred', 'famafrench', 'morningstar'などがありますが、一部のソースはAPIキーが必要になったり、サービスが終了している場合もありますので注意が必要です。

  4. start_date, end_date: datetimeオブジェクトでデータの取得期間を指定します。

  5. 結果は、日付がインデックス、High, Low, Open, Close, Volume, Adj Closeなどの列を持つPandas DataFrameとして返されます。

 

複数の銘柄の株価データを取得

 

銘柄コードのリストを渡すことで、複数の銘柄のデータを一度に取得できます。

Python
 
# 複数の銘柄の株価データを取得 (例: Google, Microsoft)
df_multi_stocks = web.DataReader(['GOOG', 'MSFT'], 'yahoo', start_date, end_date)
print("\nGoogle (GOOG) と Microsoft (MSFT) の株価データ:\n", df_multi_stocks.head())

解説:

複数の銘柄を取得すると、結果のDataFrameはMultiIndexの列を持ちます。各銘柄のデータが上位レベルのインデックスとなり、その下にHigh, Lowなどの列がネストされます。


 

2. 人口データ・経済指標の取得(FRED: Federal Reserve Economic Data)

 

FRED (Federal Reserve Economic Data) は、米国連邦準備銀行が提供する広範な経済統計データです。人口、GDP、金利など、多岐にわたるデータが利用可能です。

 

特定の経済指標データを取得

 

FREDでは、各データセットに固有のID(シリーズID)があります。例えば、米国の総人口(Civilian Noninstitutional Population)のシリーズIDはCNP16OVです。

Python
 
# 米国総人口 (Civilian Noninstitutional Population) をFREDから取得
# FREDのシリーズIDは https://fred.stlouisfed.org/ で検索可能
df_population = web.DataReader('CNP16OV', 'fred', start_date, end_date)
print("\n米国総人口データ (FRED):\n", df_population.head())
print("\nデータ型:\n", df_population.dtypes)

解説:

  1. 'CNP16OV': FREDのウェブサイトで検索できるシリーズIDです。

  2. 'fred': データソースとしてFREDを指定します。

  3. 結果は、日付がインデックス、指定したシリーズIDが列名となるDataFrameとして返されます。

 

その他のFREDデータ例

 

  • GDP (Gross Domestic Product): GDP

  • Federal Funds Rate (連邦準備制度金利): FEDFUNDS

  • Unemployment Rate (失業率): UNRATE

これらのシリーズIDを使って、同様にデータを取得できます。


 

3. その他のデータソースと注意点

 

pandas-datareaderは、他にも様々なデータソースをサポートしていますが、利用にはいくつかの注意点があります。

  • APIキー: 一部のデータソース(例: Alpha Vantage, Quandl)では、データの取得にAPIキーの登録と設定が必要です。

  • データソースの変更/終了: 外部のデータソースは、APIの仕様変更やサービスの終了などで、予告なくデータが取得できなくなることがあります。

  • データ構造: データソースによって返されるDataFrameの列名や構造が異なるため、取得後に確認が必要です。

  • エラーハンドリング: ネットワークエラーやAPI制限などでデータ取得が失敗することがあるため、try-exceptブロックなどを使ったエラーハンドリングを考慮しましょう。


 

まとめ

 

pandas-datareaderは、Pandasのデータ分析ワークフローに外部データをシームレスに組み込むための非常に強力なライブラリです。株価のような金融データから、人口やGDPといった経済指標まで、数行のコードで簡単に取得し、Pandas DataFrameとして直接分析に利用できます。

  • インストール: pip install pandas-datareader

  • 基本的な使い方: web.DataReader('銘柄/シリーズID', 'データソース', 開始日, 終了日)

  • 主要データソース:

    • 株価: 'yahoo' (Yahoo Finance)

    • 経済指標: 'fred' (Federal Reserve Economic Data)

  • 注意点: APIキーの有無、データソースの安定性、エラーハンドリング。

これらの機能を使いこなすことで、あなたのデータ分析は社内データに留まらず、外部の動向と連携した多角的な視点から行えるようになります。ぜひpandas-datareaderを積極的に活用し、分析の幅と深さを広げてください!