【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ライブラリがインストールされているか確認しましょう。まだの場合は、以下のコマンドで簡単にインストールできます。
pip install pandas-datareader
1. 株価データの取得(Yahoo Finance)
金融データはpandas-datareaderの最も一般的な用途の一つです。Yahoo Financeは多くの株価データを提供しており、これを簡単に取得できます。
特定の銘柄の株価データを取得
web.DataReader()関数を使用し、銘柄コード、データソース、取得期間を指定します。
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)
解説:
-
web.DataReader():pandas_datareader.dataモジュールからこの関数を呼び出します。 -
'AAPL': 取得したい銘柄のティッカーシンボル(銘柄コード)を指定します。 -
'yahoo': データソースとしてYahoo Financeを指定します。他にも'fred','famafrench','morningstar'などがありますが、一部のソースはAPIキーが必要になったり、サービスが終了している場合もありますので注意が必要です。 -
start_date,end_date:datetimeオブジェクトでデータの取得期間を指定します。 -
結果は、日付がインデックス、
High,Low,Open,Close,Volume,Adj Closeなどの列を持つPandas DataFrameとして返されます。
複数の銘柄の株価データを取得
銘柄コードのリストを渡すことで、複数の銘柄のデータを一度に取得できます。
# 複数の銘柄の株価データを取得 (例: 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です。
# 米国総人口 (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)
解説:
-
'CNP16OV': FREDのウェブサイトで検索できるシリーズIDです。 -
'fred': データソースとしてFREDを指定します。 -
結果は、日付がインデックス、指定したシリーズ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を積極的に活用し、分析の幅と深さを広げてください!

