*当ブログではアフェリエイト広告を利用しています。

python

【Python】Python初心者から中級者へ:pandas_datareaderで株価データをサクッと取得

momeq
ニャー
ニャー

 最近、株の投資を始めたんだけど、データ分析ってどうやってるんだにゃ?

モー
モー

 実は、Pythonを使って簡単に株価データを取得して分析できるんだよ。

ニャー
ニャー

 え?Pythonだけでそれができるんかにゃ?どうやるんだにゃ?

モー
モー

 そうなんだ。特に、pandas_datareader.dataっていうライブラリを使うと、簡単に様々な金融データを取得できるんだ。

ニャー
ニャー

 そんな便利なツールがあるだにゃんて!でも、使い方とか難しそうだにゃ…

モー
モー

 大丈夫!このブログで一緒に学べば、誰でも簡単にデータ分析の第一歩を踏み出せるよ!

 こんにちは。モーです。

 株や金融市場に興味がある方、またはデータ分析に関心がある方、特に注目していただきたい内容を今日はお届けします。

 Pythonはその柔軟性と多様なライブラリにより、さまざまなデータの取得や解析が可能となっています。中でもpandas_datareader.dataは、金融データの取得を驚くほど簡単にしてくれるライブラリです。

 このブログでは、このpandas_datareader.dataを使用して、実際に株価データを取得する手順を詳しく解説します。

 特定の企業の過去の株価の動きを調べたい、株価の予測モデルを作成したい、といった方々に特におすすめの内容となっています。初心者から中級者まで、Pythonを使って株価データにアクセスする方法を学ぶ最適なガイドとして、本記事を活用いただければ幸いです。

 それでは、まずはpandas_datareader.dataの基本的な紹介から始めていきましょう!

1. はじめに

 pandas_datareader.dataは、Pythonのデータ解析ライブラリであるpandasの拡張モジュールとして提供されているライブラリの一つです。

 主に金融データの取得を目的としており、多くの公開データソースから情報を簡単に取得することができます。

モー
モー

 Yahoo FinanceやStooq、Quandlなど、多岐にわたるデータソースにアクセス可能なことが魅力ですね。

 そして、取得したデータはpandasのデータフレームとして扱うことができ、データ解析や可視化など、pandasの豊富な機能を活用してさまざまな操作が可能となります。

 本ブログの主な目的は、Pythonを使用して株価やその他の金融データを効率的に取得する方法を、具体的な手順と共に解説することです。

 初心者から中級者までの読者を対象としており、特に以下の点を目標としています。

  1. pandas_datareader.dataの基本的な使用方法を理解する。
  2. 複数のデータソースから情報を取得する方法を学ぶ。
  3. 取得したデータの基本的な分析や可視化方法について知識を深める。

 金融データの取得や分析に興味がある方、Pythonを活用して何か新しいことを学びたいという方に、本ブログが役立つ情報源となることを期待しています。

2. pandas_datareader.dataとは?

pandas_datareader.dataの主な機能と特徴

 pandas_datareader.dataは、Pythonのデータ解析ライブラリであるpandasの拡張モジュールの一部として存在します。

 このモジュールの最大の魅力は、複数の公開データソースから直接、金融や経済データを取得できる点にあります。以下に主な特徴を挙げます。

  1. 直感的なインターフェース: 特に複雑な設定やコーディングなしで、簡単な関数を使ってデータの取得が可能。
  2. pandasの互換性: 取得したデータは直接pandasのDataFrame形式で提供され、そのまま分析や加工が行いやすい。
  3. 広範なデータソースの対応: 多くの主要な金融データソースにアクセス可能。

対応しているデータソースの紹介

 pandas_datareader.dataは、多岐にわたるデータソースから情報を取得できるのが強みです。以下は対応している主なデータソースの一部です。

  • Yahoo Finance: 株価、オプション、経済指標など多岐にわたる金融データを提供。
  • Stooq: 全世界の株価データやインデックス情報を取得可能。
  • Quandl: 多様な金融・経済データセットにアクセスが可能で、特に代替データやマクロ経済データに強い。
  • FRED: アメリカの連邦準備銀行が提供する経済・金融データの取得が可能。

 これらのデータソースの中から、研究や分析の目的に合わせて適切なソースを選択して利用することができます。

3. 環境の準備

3.1 ライブラリのインストール

 Pythonのデータ解析には様々なライブラリが存在しますが、今回の株価データ取得に関連する主要なライブラリと、それらのインストール方法を紹介します。

必要なライブラリとそのインストール方法

pandas

データ分析のための強力なライブラリで、データフレームという形式でデータを扱うことができます。

#インストール方法:
pip install pandas

pandas-datareader

金融データを取得するためのライブラリ。pandasと直接連携して、取得したデータをデータフレーム形式で提供します。

#インストール方法:
pip install pandas-datareader

 インストールが完了したら、PythonスクリプトやJupyter Notebook上で上記のライブラリをインポートし、データ取得や分析を開始することができます。

import pandas as pd
import pandas_datareader.data as pdr
モー
モー

これで、必要なライブラリのインストールが完了しました。

3.2 環境の確認

 データ解析を行う前に、予期しないエラーや互換性の問題を避けるために、使用している環境のバージョンを確認しておきましょう。

Pythonのバージョン確認方法

 Pythonのバージョンは、コマンドラインやターミナルを開き、以下のコマンドを実行することで確認できます。

python --version
 また、ある環境ではpython3としてPythonを実行する場合があるので、それに応じて以下のコマンドも利用できます。
python3 --version

pandas_datareaderのバージョン確認方法

 pandas_datareaderのバージョンを確認するには、PythonのインタラクティブシェルやJupyter Notebookを使用して、以下のコードを実行します。

import pandas_datareader as pdr
print(pdr.__version__)

 このコードは、pandas_datareaderライブラリの__version__属性を参照して、インストールされているバージョン情報を出力します。

ニャー
ニャー

プログラムを使うときはバージョンを気にした方がいいんだにゃ。

4. 株価データの取得方法

4.1 基本的な取得方法

 金融データの取得は、pandas_datareader.dataを使用します。このセクションでは、その基本的な取得方法を見ていきましょう。

 まず、以下のコードは個人投資家に大人気の「レーザーテック」の株価をStooqというデータソースから取得する例です。

import pandas_datareader.data as pdr

df = pdr.DataReader("6920.JP", "stooq")
print(df.head())
コードの各部分の詳細な説明を以下に示します。
  • インポート: ここではpandas_datareader.dataをpdrという名前でインポートしています。
  • データ取得: DataReader関数を使用し、データを取得します。この関数は主に2つの引数を必要とします。
    • 第一引数("6920.JP"): 取得したい銘柄のティッカーシンボルと国名を指定します。この例では、日本のレーザーテックのティッカーシンボルを指定しています。
    • 第二引数("stooq"): 使用したいデータソースを指定します。この例では、Stooqというデータソースを利用しています。
  • 結果の出力: print(df.head())により、取得したデータの最初の5行を表示します。これにより、データの取得が正しく行われたかを確認することができます。
ニャー
ニャー

こんな短いコードでわかるんだにゃ!

4.2 日付範囲の指定

 データ解析の際、特定の期間に焦点を当てて分析を行いたいことがよくあります。幸い、pandas_datareader.dataは日付の範囲を指定してデータを取得することができます。

 以下のコードは、レーザーテックの2022年1月1日から2023年1月1日までの株価をStooqから取得する例です。

import pandas_datareader.data as pdr
import datetime

start_date = datetime.datetime(2022, 1, 1)
end_date = datetime.datetime(2023, 1, 1)

df = pdr.DataReader("6920.JP", "stooq", start_date, end_date)
print(df.head())

コードの詳細な解説を以下に示します。

  • 日付の指定: datetime.datetimeオブジェクトを使って、取得したいデータの開始日と終了日を指定します。この例では、2022年1月1日から2023年1月1日までの範囲を指定しています。
  • データ取得: DataReader関数の3つ目と4つ目の引数に、それぞれ開始日と終了日を指定します。これにより、指定した期間のデータのみを取得することができます。
  • 結果の出力: 以前と同様、print(df.head())を使用して取得したデータの最初の5行を表示します。
モー
モー

 日付範囲を指定することで、特定の期間の動向や特定のイベントが株価に与えた影響など、様々な分析を行うことができます。

4.3 他のデータソースからの取得

 これまでの例では、Stooqからデータを取得していましたが、pandas_datareader.dataはStooqだけでなく、複数の金融データソースから情報を取得することが可能です。

Yahoo Financeからのデータ取得

 Yahoo Financeは、株価や金融データを提供するポピュラーなソースの一つです。以下はYahoo Financeからレーザーテックの株価を取得する例です。

モー
モー

以前はStooqと同じようにできていたけど、最近は同じやり方だとエラーが出ます。

「yfinance」というライブラリをインストールして、pandas_datareaderをオーバーロードしてから使う用にしてください。

ニャー
ニャー

日本のティッカーには「.T」を付けるんだにゃ。

pip install yfinance
import pandas_datareader.data as pdr
import yfinance as yf

yf.pdr_override() //オーバーロード

df_yahoo = pdr.get_data_yahoo("6920.T") //.Tを付ける
print(df_yahoo.head())

FRED (Federal Reserve Economic Data)からのデータ取得

 FREDは、アメリカの経済データを提供するサービスで、株価や金利、雇用統計などのマクロ経済データを取得することができます。

 以下はFREDから米国の米失業率を取得する例です。

codedf_fred = pdr.DataReader("UNRATE", "fred")
print(codedf_fred.head())

Quandlからのデータ取得

 Quandlは様々な金融データを提供するサービスですが、APIキーが必要です。登録してAPIキーを取得した後、以下のようにしてデータを取得することができます。

pdr.quandl.QuandlReader.api_key = 'YOUR_API_KEY' //ここにAPIキー
df_quandl = pdr.DataReader("WIKI/AAPL", "quandl")
print(df_quandl.head())

注意: YOUR_API_KEYの部分は、Quandlから取得した実際のAPIキーに置き換えてください。

モー
モー

他にもいろいろなデータソースがありますよ。必要に応じて調べてみてください。

5. データの解析と活用

5.1 データの基本的な分析

 データを取得した後、そのデータの概要や特性を把握することは非常に重要です。このセクションでは、取得した金融データの基本的な分析方法を紹介します。

データの最初と最後の部分を確認

 データが正しく取得されているか、またどのようなカラムが含まれているかを確認するためには、head()tail()メソッドを使用します。

print(df.head())  # 最初の5行を表示
print(df.tail())  # 最後の5行を表示

基本統計情報の取得

 describe()メソッドを使うと、各カラムの基本的な統計情報(平均、中央値、最小値、最大値など)を取得することができます。

print(df.describe())

##以下のように表示されます。
               Open          High           Low         Close        Volume
count    244.000000    244.000000    244.000000    244.000000  2.440000e+02
mean   20511.568443  20934.129508  20038.438525  20478.436475  7.719883e+06
std     4098.626700   4154.407910   3916.344907   3991.781233  2.945069e+06
min    14445.000000  15175.000000  14320.000000  14695.000000  3.728700e+06
25%    17643.225000  17849.725000  17148.050000  17483.750000  5.534372e+06
50%    19200.000000  19515.000000  18827.500000  19171.650000  7.165525e+06
75%    22287.875000  22857.450000  21717.500000  22314.700000  8.977051e+06
max    35664.600000  35983.700000  33780.200000  34218.900000  2.126810e+07
ニャー
ニャー

データを確認するには、便利なんだにゃ。

データの欠損値の確認

 金融データには、欠損値や異常値が含まれていることがあります。isnull()sum()を組み合わせることで、各カラムの欠損値の数を確認できます。

print(df.isnull().sum())

5.2 データをの可視化

時系列の可視化

 株価や金融データは時系列データとしての特性を持っているため、その動向を可視化することは重要です。以下は、株価のクロージング価格の時系列をプロットする例です。

import matplotlib.pyplot as plt

df['Close'].plot(figsize=(10, 5))
plt.title('Closing Price Over Time')
plt.ylabel('Price')
plt.xlabel('Date')
plt.grid(True)
plt.show()
モー
モー

こんな感じに綺麗なグラフができます。分析に視覚化は大切ですね。

移動平均のプロット

短期と長期の移動平均を用いて、価格のトレンドを視覚的に捉えます。

df['Short_MA'] = df['Close'].rolling(window=50).mean()
df['Long_MA'] = df['Close'].rolling(window=200).mean()

df[['Close', 'Short_MA', 'Long_MA']].plot(figsize=(12, 6))
plt.title('Moving Averages')
plt.ylabel('Price')
plt.xlabel('Date')
plt.grid(True)
plt.show()

ボリューム(取引量)の可視化

取引量の動向を確認することで、市場の活発さや関心を判断する手がかりとなります。

df['Volume'].plot(kind='bar', figsize=(12, 6))
plt.title('Trading Volume Over Time')
plt.ylabel('Volume')
plt.xlabel('Date')
plt.grid(True)
plt.show()

キャンドルチャートの表示

 mplfinanceというライブラリを使用して、キャンドルチャートを表示することができます。これにより、開始価格、終了価格、高値、安値の動きを一目で確認できます。

pip install mplfinance
import mplfinance as mpf

mpf.plot(df[-100:], type='candle', volume=True, figsize=(12, 6))
モー
モー

外部ライブラリを使うと便利で綺麗なグラフをどんどん描けます。積極的に使いたいですね。

 このように、初心者の方でも、Pythonの基本的な知識と技術を身につければ、リアルタイムの株価データを取得して、それを基にした視覚的なグラフを描くことが可能となります。そして、そのグラフ上でさまざまな分析テクニックを適用することで、より高度な投資戦略を立てる助けとなります。

 例えば、ボリンジャーバンドは投資家やトレーダーにとって非常に重要なテクニカル指標の一つです。また、ゴールデンクロスをはじめとするクロスポイントを見極めることで、株を買う最適なタイミングを計ることができるのです。

 株価分析に関する知識は無限です。しかし、Pythonを武器にすれば、その深い海に挑む勇気が湧いてきます。是非、この機会にPythonと株価分析の勉強を始めてみてください。

 さらに詳しい情報や技術を学ぶために、以下のリンクからおすすめの本をチェックしてみてください。

6. まとめ

 このブログを通じて、pandas_datareader.dataを用いた金融データの取得方法から、基本的なデータの可視化、そして応用的な分析手法までの一連の流れを学びました。

まとめ
  • pandas_datareader.dataは、様々な金融データソースからデータを手軽に取得できるツールです。
  • 基本的なデータの取得方法から日付の範囲指定、さらには異なるデータソースからの取得方法を探求しました。
  • 取得したデータを用いての基本的な分析や可視化の技術、そして応用的な分析手法を紹介しました。
モー
モー

 私の記事を最後までお読みいただき、ありがとうございます。

 プログラミングと株の学びは、時に難解かもしれませんが、その先に広がる可能性は計り知れません。

 是非、今後の成長に役立ててくださいね。

記事URLをコピーしました