ページ毎のクリック数,表示回数を比較

Google Search Console の “ページ.csv” を Python で読み込み,クリック数,表示回数の比較を行います。

例えば,前年と今年のクリック数,表示回数の比較,前月と今月のクリック数,表示回数の比較での利用を想定しています。

Python コード

早速,Python コードを紹介します。

ライブラリ読み込みと設定変更

まずは,ライブラリの読み込みと設定変更を行います。

使用するライブラリは 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)

データ読み込み

次にデータを読み込みます。今回は,今年と昨年の “ページ.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)

データフレーム結合と増減率計算

読み込んだデータフレームを結合します。’上位のページ’ (URL) をキーとして,結合しますが,接尾辞 ‘_2024’ または ‘_2023’ を付加しておきます。

また,前年と今年を比較したクリック数,表示回数の増減率を計算しておきます。

# データフレームの結合
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

クリック数の変化を可視化

クリック数の変化を可視化します。

前年のクリック数を横軸,今年のクリック数を縦軸とした散布図を描きます。このとき,透明度を 0.7 としておくことで,データ点の視認性が向上します(copilot 談)。

散布図に y = x のグラフを赤色の破線で追加しておきます。

# 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()

上記のグラフの出力例を示します。

赤色の破線よりも下に位置する点は,前年に比べて,今年のクリック数が少なくなったページです。

図 可視化したクリック数の変化

表示回数の変化を可視化

同様に表示回数の変化を可視化します。

# 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()

可視化した表示回数の変化を示します。

図 可視化した表示回数の変化

対策すべきページの抽出

クリック数や表示回数の変化を可視化して,対策すべきページを抽出する条件を検討します。

例えば,前年の表示回数が 50,000 回以上で,表示回数の増減率が 100 % 未満のページを対策すべきページとして抽出します。

df_merged = df_merged[df_merged['表示回数_2023'] >= 50000]
df_merged = df_merged[df_merged['表示回数増減率'] < 100]
print(df_merged)

まとめ

ページ毎にクリック数や表示回数の変化を評価しました。

クリック数や表示回数が減少しているページを抽出することで,対策がとりやすくなります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です