株式投資において、適切なデータを取得し、それを分析することは極めて重要です。この章では、Pythonを使って株価データを取得し、データフレームに変換して分析を行う方法について学びます。さらに、取得したデータを視覚化することで、トレンドやパターンを把握する力を養います。具体的には、Yahoo FinanceなどのAPIを使用して株価データを取得し、Pandasを使ってデータを処理し、Matplotlibを使ってデータをグラフ化します。
Pythonでは、株価データを取得するためのさまざまな方法がありますが、この本では手軽に使える「yfinance」というライブラリを紹介します。「yfinance」は、Yahoo FinanceのAPIを利用して株価データを簡単に取得できる便利なツールです。
まず、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)」が含まれています。この情報を元に、さらなる分析や視覚化を行うことができます。
次に、取得した株価データを加工して、さらに分析しやすくする方法を学びましょう。PythonのPandasライブラリは、データの操作に非常に強力で、時間系列データの扱いにも優れています。yfinanceで取得したデータは、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())
移動平均を使うことで、価格のトレンドを滑らかにし、ノイズを除去することができます。
データを視覚的に表現することは、パターンやトレンドを発見するために非常に有効です。Pythonでは、Matplotlib
やSeaborn
といったライブラリを使って簡単にグラフを描画することができます。
もし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を使ったデータの操作も直感的に行えます。データの可視化により、トレンドや異なる企業間のパフォーマンスを視覚的に比較できるようになりました。
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓