Pythonでできる!Googleトレンド×株価分析入門【初心者向け】

目次

1. はじめに

1.1. 株価分析、最初の一歩にPythonを

この記事では、「株価を眺めるだけ」から、「自分でデータを動かして分析できるようになる」ことを目指します。
しかし、実はPythonというプログラミング言語を使えば、初心者でも意外と簡単にデータを取得し、加工し、グラフ化することができます。

Pythonには「yfinance」ライブラリがあり、これを使えば、Apple(AAPL)やTesla(TSLA)などの株価データを一発でダウンロードできます。
Pythonを使った株価分析に初めて挑戦したい」という方に最適な内容です。
グラフの作成や数値の加工が、少ないコードでスピーディに行うことができます。

Pythonを使うことで、「株価をなんとなく眺めるだけ」から、「自分でデータを動かして気づきを得る」分析スタイルに変わることができるのです。

1.2. さらに一歩進んだ分析──「世間の注目度」を取り入れる

株価は企業の業績だけで動いているわけではありません。
実際には、ニュース、SNS、そして「世間の注目度」も大きな影響を与えています。

そこで登場するのが、Googleトレンドです。
Googleトレンドを使うと、特定のキーワード(例:「Apple stock」や「Tesla stock」)がどれだけ検索されたか、その推移をデータとして取得することができます。
このデータを株価と組み合わせることで、

  • 注目度が急増したタイミング
  • 注目度の上昇と株価の連動性
  • 話題のピークと株価変動の関係

などを分析できるようになります。

言い換えれば、「人々がどんな銘柄に注目しているか」を、数値として可視化できるということです。

1.3. 本記事のゴール

この記事では、Pythonとyfinanceを使って株価データを取得し、
さらにpytrendsというライブラリを使ってGoogleトレンドデータを取り込み、
最終的に株価と検索トレンドの動きを比較分析できる簡単なコード例を紹介します。

初心者でもコピー&ペーストですぐ試せるように、やさしく丁寧に解説していきます。
Pythonと株価分析に少しでも興味があるなら、この記事を読んで、ぜひ「自分の手で動かす」第一歩を踏み出してください!


2. Python環境の準備と必要なライブラリのインストール

Pythonで株価データとGoogleトレンドを扱うには、いくつかの便利なライブラリを使います。まずは、開発環境を整えましょう。

2.1. 必要なライブラリ一覧

これから株価とGoogleトレンドを扱うために、Pythonで必要なライブラリをまとめました。

ライブラリ名用途
pandasデータの整理・集計
yfinance株価データの取得
pytrendsGoogleトレンドデータの取得
matplotlibグラフ作成

すべて無料で使えます!

2.2. ライブラリのインストール方法

それぞれのライブラリをインストールするには、以下のコマンドをターミナルやノートブックに入力してください。

pip install pandas yfinance pytrends matplotlib


注意

  • pipコマンドはターミナル(コマンドプロンプト)やNotebookのセルにそのまま打ち込めます。
  • すでにインストール済みの場合、エラーが出ても問題ありませんので、そのまま進めて大丈夫です。

2.3. ライブラリのインポート確認

インストールができたら、次のコードでライブラリが正しく使えるかをチェックしましょう。

import pandas as pd
import yfinance as yf
from pytrends.request import TrendReq
import matplotlib.pyplot as plt

print("ライブラリ読み込み成功!")

このセルがエラーなく動けば準備完了!


📢 ここでやるべきことはあくまで「準備」まで。
👉 データ収集や実際の分析は、次章で本格的にスタートします!


3. Googleトレンドデータと株価データを取得しよう

Pythonを使って、実際に「世間の注目度」と「株価」のデータを取得してみましょう!
これが後の分析の土台になります。


3.1. Googleトレンドデータの取得

最初に、Googleトレンドを使って、「Apple stock」というキーワードがどれくらい検索されているか、その推移データを取得します。

from pytrends.request import TrendReq

# pytrendsのセッションを作成
pytrends = TrendReq(hl='en-US', tz=360)

# 検索キーワードの指定
kw_list = ["Apple stock"]
pytrends.build_payload(kw_list, timeframe='2024-04-01 2024-04-25')

# 流行データの取得
trend_data = pytrends.interest_over_time()

# 一部を表示
print(trend_data.head())

3.2. AAPL(アップル)の株価データの取得

続いて、今回は例としてApple社(ティッカーシンボル:AAPL)の株価データを取得します。
他銘柄に変えたい場合はシンボル名を変更するだけです。

import yfinance as yf

# AAPLの株価データ取得
stock_data = yf.download("AAPL", start="2024-04-01", end="2024-04-25")

# 終値(Close)のみを抜き出し
close_price = stock_data["Close"]

# 一部を表示
print(close_price.head())

3.3. データの処理

さあ、ここまでで、Googleトレンドも株価データもそろったので、 次の章で、データを一つに結合して分析に進めていきましょう!


4. 結果を見てみよう

ここまでで、GoogleトレンドデータとAAPLの株価データを取得した状態になっています!

ここからは、取得した「注目度」と「株価」を結合し、どんな関係があるのかを”データから読み取る“最初の分析に挑戦していきます!


4.1. フルコード(データ結合 + 基本分析)

from pytrends.request import TrendReq
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 1. Googleトレンドデータ取得
pytrends = TrendReq(hl='en-US', tz=360)
pytrends.build_payload(["Apple stock"], timeframe='2024-04-01 2024-04-25')
trend_data = pytrends.interest_over_time()["Apple stock"].squeeze()

# 2. 株価データ取得
aapl_data = yf.download("AAPL", start="2024-04-01", end="2024-04-25")
price_data = aapl_data["Close"].squeeze()

# 3. データ結合
merged_df = pd.DataFrame({
    "Trend": trend_data,
    "Price": price_data
}).dropna()

print(merged_df.head())

# 4. 基本分析
print("\n\ud83d\udcca 相関係数:")
print(merged_df.corr())

# 5. トレンドと株価の横線グラフ
fig, ax1 = plt.subplots(figsize=(14,6))
ax1.set_ylabel('AAPL Stock Price')
ax1.plot(merged_df.index, merged_df['Price'], label='AAPL Price', linewidth=2)

ax2 = ax1.twinx()
ax2.set_ylabel('Google Trend Interest')
ax2.plot(merged_df.index, merged_df['Trend'], label='Google Trend', linestyle='--', color='orange', linewidth=2)

fig.legend(loc="upper left")
plt.title("AAPL Stock Price vs Google Trend ('Apple stock')")
plt.grid()
plt.tight_layout()
plt.show()

4.2. 【このグラフから読み取れること】

グラフを重ねて見ることで、「注目度が高まったときに株価が動いているか?」を直感的にチェックできるようになります。ここから具体的なポイントを見ていきましょう!

🟧 例えばこのグラフでは──

  • 2024年4月11日〜12日
    “Apple stock”の検索トレンドが急上昇し、それに続いて株価も大きく上昇しています。
    → このタイミングでは、ニュースや決算などで注目が集まり、実際に買いも入ったと考えられます。
  • 4月19日
    トレンドスコアが高いのに、株価が下がっています。
    → 「悪材料への注目」(例:業績懸念やネガティブ報道など)によって検索された可能性があります。
  • 4月24日
    株価が上がる前にトレンドがやや先行して上昇しているように見えます。
    → 一部の投資家が先に注目して検索・情報収集していた可能性もあり、「注目の先読み」という見方もできます。

5. トレンドと株価データを使った発展的分析アイデア

基本分析で「注目度と株価の関連性」が見えたところで、さらに一歩進め、データの変化に注目した分析へ挑戦します。
➡️ 株価変動のヒントは「変化」に潜んでいるかもしれません!

5.1. 変化率(リターン)の分析

株価の日々の変化(増減率)を見ることで、株価と注目度の短期的な連動パターンを探ることができます!

▶️ フルコード:

from pytrends.request import TrendReq
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 1. Googleトレンドデータ取得
pytrends = TrendReq(hl='en-US', tz=360)
pytrends.build_payload(["Apple stock"], timeframe='2024-04-01 2024-04-25')
trend_data = pytrends.interest_over_time()["Apple stock"].squeeze()

# 2. 株価データ取得
aapl_data = yf.download("AAPL", start="2024-04-01", end="2024-04-25")
price_data = aapl_data["Close"].squeeze()

# 3. データ結合
merged_df = pd.DataFrame({
    "Trend": trend_data,
    "Price": price_data
}).dropna()

# 4. 変化率の計算
merged_df['Trend_Change'] = merged_df['Trend'].pct_change() * 100
merged_df['Price_Change'] = merged_df['Price'].pct_change() * 100

# 5. 変化率の相関を表示
print("\n📊 変化率の相関係数:")
print(merged_df[['Trend_Change', 'Price_Change']].corr())

# 6. 変化率のグラフ描画
fig, ax = plt.subplots(figsize=(14,6))
ax.plot(merged_df.index, merged_df['Trend_Change'], label='Trend Change (%)', linestyle='--', color='orange')
ax.plot(merged_df.index, merged_df['Price_Change'], label='Price Change (%)', color='blue')

plt.title("Trend vs Price Daily Change (%)")
plt.ylabel("Change (%)")
plt.grid()
plt.legend()
plt.tight_layout()
plt.show()

# 7. ピーク検出(トレンド急増日を抽出)
peak_days = merged_df[merged_df['Trend_Change'] > 5]
print("\n✨ トレンド急増日:")
print(peak_days[['Trend_Change', 'Price_Change']])

# 8. ピーク日の株価変動をグラフ化(オプション)
if not peak_days.empty:
    fig, ax = plt.subplots(figsize=(14,6))
    ax.bar(peak_days.index, peak_days['Trend_Change'], label='Trend Change (%)', color='orange')
    ax.set_ylabel('Trend Change (%)')
    plt.title("Trend Spike Events")
    plt.grid()
    plt.legend()
    plt.tight_layout()
    plt.show()

このフルコードを実行すると、
✅ 株価と注目度の日次変化を比較するグラフ(全体像)
✅ 注目度が急上昇した日のみを抽出するグラフ(特定イベント)
がそれぞれ作成されます。
➡️ これにより、「いつ注目が集まり、株価がどう動いたか」を視覚的に捉えられます!

  1. Trend vs Price Daily Change (%)(折れ線グラフ)
    • Google検索流行と株価の日次変化率を比較している
  2. Trend Spike Events(急増日のピークバーグラフ + 表示)
    • 検索関心が急増した日だけ抽出して描画

5.2. この分析からわかること

📊 Trend vs Price Daily Change (%)

📊 Trend Spike Events

  • 2024年4月11日、Googleの検索トレンドと株価がともに大きく上昇しました。
  • その後、2024年4月19日には検索トレンドが引き続き上昇したものの、株価は逆に下落しました。
  • 一部では、「検索トレンドの上昇が株価変動を先行して示唆する」との見方もあります。
  • 特に、2024年4月11日には検索トレンドが22.7%も急増し、その影響で株価も上昇した可能性が示唆されています。

5.3. まとめ(ポイント)

  • 検索トレンドの変化は、株価変動になんらかの先行情報になりえる
  • 特に急増日に注目!、どんなニュースがあったかも調べてみよう

▶️ ここから、もっと長期データでの機械学モデル挙動も考えられる!


☑️ ポイント:

変化率を比較することで、単純な水準比較よりもダイナミックな関連を見いだすことができます!


6. まとめと次のステップ

ここまでの分析で、「世の中の注目」と「株価」の間に意外なつながりが見えてきました!
では最後に、今回学んだことの振り返りと、次にチャレンジできるステップを整理しましょう。

6.1. この記事でできるようになったこと

  • PythonでGoogleトレンド・株価データを自在に取得できる
  • データを結合して一つの流れとして可視化できる
  • 相関係数やグラフで仮説を立てる視点を持てるようになった

6.2. 次に試してみたいアイデア

さらに分析を深めたいなら、こんなアイデアにも挑戦してみましょう!

  • 変化率の分析:急な検索数の変動をピックアップして、株価の急変と関連づける
  • 複数ワードの比較:”Apple”, “iPhone”, “Macbook” など複数キーワードを同時に調べて、「どの商品・企業に注目が集まっているか」を比較してみよう!
  • 他企業との比較:例えばApple vs Teslaのように、業界内比較をする
  • 時間軸を変える:1年分、5年分など長期スパンで見ると違った傾向が見えるかも

6.3. 最後に

「世の中の注目度」と「株価」の関係は、データサイエンス初学者にもとても面白いテーマです!

難しく考えすぎず、まずは気になる企業や話題でサクッと試してみましょう。
Pythonとデータ分析の楽しさを体感できるはずです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Python・投資・業務効率化をテーマにしたブログを運営しています。
本業では社内ツール・アプリの運営・開発をしており、趣味はキャンプや食べ歩きです。

このブログでは、実体験や実務で役立った知識をベースに、
初心者でも再現できる情報発信を心がけています。

コメント

コメントする

目次