Python でページクリック数のパレート図作成
Google Search Console の “ページ.csv” を Python で読み込み,クリック数の多いページからパレート図を作成する。
なお,パレート図とは,あるものを構成する項目(本事例ではページ)ごとの値(本事例ではクリック数)を大きい順に並べたものと,その累積の構成比を表す折れ線グラフを組み合わせたグラフである。
Python とライブラリのバージョン
今回,使用した Python のバージョン,ライブラリのバージョンは以下のとおり。
- Python 3.7.4
- matplotlib 3.1.1
- japanize-matplotlib 1.1.3
- pandas 1.3.5
データの概要
本稿で用いた “ページ.csv” には,以下のデータ(抜粋)が記載されている。
※『目指せ!電気主任技術者~解説ノート』の 2022年1月1日~12月31日までのデータである。
上位のページ,クリック数,表示回数,CTR,掲載順位
https://electrical-engineer.hatenablog.jp/entry/2021/11/01/060000,3975,21963,18.1%,8.97
https://electrical-engineer.hatenablog.jp/entry/2022/01/07/090000,3776,40965,9.22%,6.8
https://electrical-engineer.hatenablog.jp/entry/2022/01/19/090000,1821,25239,7.22%,7.48
https://electrical-engineer.hatenablog.jp/entry/2022/02/20/090000,1754,7893,22.22%,9.43
https://electrical-engineer.hatenablog.jp/entry/2021/10/29/070000,1735,17063,10.17%,9.12
パレート図を作成するコード
パレート図を作成するコードを示す。
import matplotlib.pyplot as plt
import japanize_matplotlib
import pandas as pd
df = pd.read_csv('ページ.csv', usecols = ['上位のページ','クリック数','表示回数','CTR','掲載順位'], encoding='utf-8')
# クリック数が 10 未満のページは足切り
df=(df[df['クリック数'] >= 10])
sum_clicks=df['クリック数'].cumsum()/df['クリック数'].sum()*100
# クリック数
fig = plt.figure()
ax1 = fig.add_subplot()
ax2 = ax1.twinx() #ax1のオブジェクトをax2オブジェクトに関連付け
ax1.bar(range(0,len(df['クリック数'])),df['クリック数'])
ax2.plot(sum_clicks,color="red")
ax1.set_ylabel("クリック数")
ax2.set_ylabel("累積比率 [%]")
ax2.set_ylim(0,100)
plt.title('クリック数 (N = ' + str(sum(df['クリック数'])) + ')')
plt.grid()
plt.savefig("abc_clicks.png",dpi=300)
plt.show()
出力したパレート図
出力したパレート図を下図に示す。
ページ毎のクリック数を大きい順に棒グラフと,その累積の構成比を表す折れ線グラフが示されている。
ここで,上位の 7 ページの累積比率は 60 % になっている。この知見をもとにしたクリック数の増加施策として,上位 10 ページのリライトを行うことが考えられる。
更新履歴
- 2023年1月8日 新規作成
- 2024年1月21日 パレート図において,累積比率を 0 ~ 100 % に設定