Google Search Console のページ分析を Python で自動化する
Google Search Console の “ページ.csv” を Python で読み込み,クリック数や表示回数の比較を行う方法について解説する。本記事では,前年と今年の比較,あるいは前月と今月の比較など,継続的なパフォーマンス評価に役立つ分析手法を紹介する。
1. 使用する Python コードについて
まずは,本記事で使用する Python コードを示す。Google Search Console のページデータを読み込み,クリック数と表示回数の変化を可視化するための処理を順に説明する。
(1) ライブラリ読み込みと設定変更
使用するライブラリは numpy,pandas,matplotlib,japanize_matplotlib,pathlib である。
pandas の初期設定では,カラム内の文字数が 50 に制限されているため,URL を表示しきれない。そこで,最大文字数を 80 に変更する。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
from pathlib import Path
#カラム内の文字数。デフォルトの 50 では URL を表示しきれないため 80 に変更
pd.set_option("display.max_colwidth", 80)
(2) データ読み込み
今年と昨年の “ページ.csv” を読み込む。
copilot にリファクタリングを依頼したところ,データ読み込み関数を定義する形式に改善された。
# データの読み込み関数
def load_csv(file_path, usecols, encoding="utf-8"):
return pd.read_csv(file_path, usecols=usecols, encoding=encoding)
# CSVファイルのパス
csv_files = {
"this_year": ./今年/ページ.csv",
"last_year": ./前年/ページ.csv",
}
# データの読み込み
usecols = ['上位のページ', 'クリック数', '表示回数', 'CTR', '掲載順位']
df_thisyear = load_csv(csv_files["this_year"], usecols)
df_lastyear = load_csv(csv_files["last_year"], usecols)
(3) データフレーム結合と増減率計算
読み込んだデータフレームを ‘上位のページ’(URL)をキーとして結合する。
また,前年と今年のクリック数・表示回数の増減率を計算する。
# データフレームの結合
df_merged = pd.merge(df_thisyear, df_lastyear, on='上位のページ', suffixes=('_2024', '_2023'))
# ゼロ除算回避のための処理
df_merged['クリック数_2023'] = df_merged['クリック数_2023'].replace(0, np.nan)
df_merged['表示回数_2023'] = df_merged['表示回数_2023'].replace(0, np.nan)
df_merged['クリック数増減率'] = (df_merged['クリック数_2024'] / df_merged['クリック数_2023']) * 100
df_merged['表示回数増減率'] = (df_merged['表示回数_2024'] / df_merged['表示回数_2023']) * 100
(4) クリック数の変化を可視化
前年のクリック数を横軸,今年のクリック数を縦軸とした散布図を描画する。
透明度を 0.7 に設定することで,データ点が重なっても視認性が高くなる。
# x 軸の範囲を動的に設定
x_min, x_max = df_merged[['クリック数_2023', 'クリック数_2024']].min().min(), df_merged[['クリック数_2023', 'クリック数_2024']].max().max()
plt.scatter(df_merged['クリック数_2023'], df_merged['クリック数_2024'], label="データ", alpha=0.7)
plt.plot([x_min, x_max], [x_min, x_max], color='red', linestyle='dashed', label="y = x")
plt.xlabel('前年のクリック数')
plt.ylabel('今年のクリック数')
plt.xscale('log')
plt.yscale('log')
plt.grid()
plt.legend(loc="best") # 凡例の位置を最適化
plt.show()
赤色の破線より下に位置する点は,前年よりクリック数が減少したページである。

(5) 表示回数の変化を可視化
クリック数と同様に,表示回数の変化も散布図で可視化する。
# x 軸の範囲を動的に設定
x_min, x_max = df_merged[['表示回数_2023', '表示回数_2024']].min().min(), df_merged[['表示回数_2023', '表示回数_2024']].max().max()
plt.scatter(df_merged['表示回数_2023'], df_merged['表示回数_2024'], label="データ", alpha=0.7)
plt.plot([x_min, x_max], [x_min, x_max], color='red', linestyle='dashed', label="y = x") # 動的範囲で直線を描画
plt.xlabel('前年の表示回数')
plt.ylabel('今年の表示回数')
plt.xscale('log')
plt.yscale('log')
plt.grid()
plt.legend(loc="best") # 凡例の位置を最適化
plt.show()

(6) 対策すべきページの抽出
可視化結果を踏まえ,対策すべきページを抽出する条件を設定する。
以下は一例である。
- 前年の表示回数が 50,000 回以上
- 表示回数増減率が 100 % 未満(前年より減少)
df_merged = df_merged[df_merged['表示回数_2023'] >= 50000]
df_merged = df_merged[df_merged['表示回数増減率'] < 100]
print(df_merged)
まとめ
本記事では,Google Search Console の “ページ.csv” を Python で読み込み,クリック数と表示回数の変化を比較する方法を解説した。
前年と今年のデータを結合し,増減率を計算することで,パフォーマンスが低下したページを効率的に抽出できる。
継続的な改善を行ううえで,データに基づいた分析は非常に有効である。
更新履歴
- 2025年5月3日 新規作成
- 2026年1月3日 リファクタリング

