第3章: Python 株価データの取得と分析

株式投資において、適切なデータを取得し、それを分析することは極めて重要です。この章では、Pythonを使って株価データを取得し、データフレームに変換して分析を行う方法について学びます。さらに、取得したデータを視覚化することで、トレンドやパターンを把握する力を養います。具体的には、Yahoo FinanceなどのAPIを使用して株価データを取得し、Pandasを使ってデータを処理し、Matplotlibを使ってデータをグラフ化します。

3.1 株価データの取得方法

Pythonでは、株価データを取得するためのさまざまな方法がありますが、この本では手軽に使える「yfinance」というライブラリを紹介します。「yfinance」は、Yahoo FinanceのAPIを利用して株価データを簡単に取得できる便利なツールです。

yfinanceのインストール

まず、yfinanceをインストールする必要があります。以下のコマンドをターミナルまたはコマンドプロンプトに入力して、インストールを行ってください。

pip install yfinance

基本的な株価データの取得

yfinanceを使って株価データを取得する方法を見てみましょう。ここでは、例としてApple Inc.(ティッカーシンボル: AAPL)の株価データを取得します。

import yfinance as yf

# AAPLの株価データを取得
ticker_symbol = 'AAPL'
data = yf.Ticker(ticker_symbol)

# 過去5年分の日足データを取得
stock_data = data.history(period='5y')

# 取得したデータの先頭5行を表示
print(stock_data.head())

結果の確認

上記のコードでは、history() メソッドを使って過去5年分の日足データを取得しています。stock_dataには、以下のようなデータが格納されています。

            Open   High    Low   Close    Volume  Dividends  Stock Splits
Date                                                                    
2017-10-01  41.43  42.02  40.58   41.63  18500100        0.0           0
2017-10-02  41.67  42.35  41.61   42.29  14654000        0.0           0
2017-10-03  42.31  42.65  41.84   42.53  15678000        0.0           0
...

このデータには、各日の「始値(Open)」「高値(High)」「安値(Low)」「終値(Close)」「取引量(Volume)」「配当金(Dividends)」「株式分割(Stock Splits)」が含まれています。この情報を元に、さらなる分析や視覚化を行うことができます。

3.2 Pandasを使ったデータ処理

次に、取得した株価データを加工して、さらに分析しやすくする方法を学びましょう。PythonのPandasライブラリは、データの操作に非常に強力で、時間系列データの扱いにも優れています。yfinanceで取得したデータは、Pandasのデータフレーム形式で返されるため、すぐにPandasを使った処理を行えます。

Pandasの基本操作

まず、取得した株価データの基本的な操作を確認しましょう。

import pandas as pd

# 株価データの基本統計量を表示
print(stock_data.describe())

# 特定の列だけを表示(例: 終値と取引量)
print(stock_data[['Close', 'Volume']].head())

# 欠損値の確認
print(stock_data.isnull().sum())

日付をインデックスとして扱う

株価データは通常、日付を基にして時系列的に分析するため、日付をインデックスとして扱うのが一般的です。history()メソッドで取得したデータは、すでに日付がインデックスとして設定されていますが、もしデータを自分で取得・加工した場合には、以下のように日付をインデックスに設定することができます。

# 日付をインデックスに設定
stock_data.index = pd.to_datetime(stock_data.index)

# インデックスの確認
print(stock_data.index)

移動平均の計算

移動平均は、トレンド分析でよく使われる指標の一つです。ここでは、20日間の単純移動平均を計算してみましょう。

# 20日移動平均を計算して列に追加
stock_data['20MA'] = stock_data['Close'].rolling(window=20).mean()

# 先頭5行を表示
print(stock_data[['Close', '20MA']].head())

移動平均を使うことで、価格のトレンドを滑らかにし、ノイズを除去することができます。

3.3 データの可視化

データを視覚的に表現することは、パターンやトレンドを発見するために非常に有効です。Pythonでは、MatplotlibSeabornといったライブラリを使って簡単にグラフを描画することができます。

Matplotlibのインストール

もしMatplotlibがまだインストールされていない場合は、以下のコマンドでインストールしてください。

pip install matplotlib

株価データの基本的な可視化

では、株価の終値(Close)と20日移動平均をグラフで表示してみましょう。

import matplotlib.pyplot as plt

# グラフのサイズを設定
plt.figure(figsize=(10,5))

# 終値をプロット
plt.plot(stock_data.index, stock_data['Close'], label='Close Price')

# 20日移動平均をプロット
plt.plot(stock_data.index, stock_data['20MA'], label='20-Day MA', color='orange')

# グラフのタイトルとラベルを設定
plt.title('Apple Stock Price and 20-Day Moving Average')
plt.xlabel('Date')
plt.ylabel('Price (USD)')

# 凡例を表示
plt.legend()

# グラフを表示
plt.show()

上記のコードで、Appleの終値とその20日移動平均を同じグラフにプロットします。このように、異なるデータを重ねて可視化することで、価格の動きとそのトレンドを視覚的に把握できます。

複数の株価データの比較

次に、複数の株式の価格を比較してみましょう。例えば、Apple (AAPL) と Microsoft (MSFT) の株価を比較するグラフを描画します。

# Microsoftの株価データも取得
msft_data = yf.Ticker('MSFT').history(period='5y')

# グラフのサイズを設定
plt.figure(figsize=(10,5))

# Appleの終値をプロット
plt.plot(stock_data.index, stock_data['Close'], label='AAPL')

# Microsoftの終値をプロット
plt.plot(msft_data.index, msft_data['Close'], label='MSFT', color='green')

# グラフのタイトルとラベルを設定
plt.title('AAPL vs MSFT Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price (USD)')

# 凡例を表示
plt.legend()

# グラフを表示
plt.show()

このコードでは、AppleとMicrosoftの株価を比較し、それぞれの終値をグラフで視覚化します。複数の株式を同時に可視化することで、異なる企業間の価格動向を把握しやすくなります。

まとめ

この章では、Pythonを使って株価データを取得し、Pandasを使ってそのデータを処理し、最後にMatplotlibを用いてデータを視覚化する方法を学びました。yfinanceを使えば、Yahoo Financeの豊富なデータにアクセスしやすく、Pandasを使ったデータの操作も直感的に行えます。データの可視化により、トレンドや異なる企業間のパフォーマンスを視覚的に比較できるようになりました。


初心者におすすめ!プログラミングスクールのススメ

未経験でも気軽に!サブスク型プログラミングスクール【Freeks】

プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。

独学の挫折率、驚きの87.5%!

独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。

有料と無料、スクールの違いは?

プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:

  • 受講条件が異なる
  • 学べるスキルやカリキュラム内容が異なる
  • 就職や転職のサポート内容が異なる

どちらが自分に合っているか、よく考えて選ぶのが大事です。

サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!

プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:

  • 未経験者向けのわかりやすいカリキュラム
  • 経験豊富なエンジニアのサポート
  • オンラインで自分のペースで学習可能

なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。

終了後は副業もサポート!

カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。

独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
 ↓ ↓ こちらをクリック ↓ ↓ 

p-school

Share
Published by
p-school

Recent Posts

第6章: PHPのデータベース操作

PHPを使用してデータベースに…

2週間 ago

第5章: PHPのオブジェクト指向プログラミング(OOP)

オブジェクト指向プログラミング…

2週間 ago

第4章: PHPの関数

プログラミングにおいて、関数は…

2週間 ago

第3章: PHPの配列とコレクション

PHPでの配列とコレクションの…

2週間 ago

第2章: PHPの基本文法

PHPの基本的な構文や使い方を…

2週間 ago