Wikipediaではページごとのアクセス数を公開している(Analytics Datasets: Pageviews)。1時間ごとにダンプファイルが作成されており、すべての言語のページアクセス数が一つのファイルにまとめられている。このファイルからPythonで日本語Wikipediaページのアクセス数を取得してみる。
環境
データのダウンロード
とりあえずファイルの中身を確認。半角スペース区切りで4列ある。Wikipedia pageviews analysisによると、1列目がドメインコード、2列目がページタイトル、3列目がアクセス数、4列目は今はメンテナンスされていないらしい。
結果は以下の通り。スエズ運河などちょうど話題になっていることや、著名人やアニメのページのアクセス数が多い。それらに混じって競走馬のページがアクセス数上位にある。
Pythonでページアクセス数を取得する
ダンプファイルのドメインコードは、言語とモバイル用ページなどの種類を表している(Analytics/Data Lake/Traffic/Pageviews)ようで、今回はja(PC用ページ)とja.m(モバイル用ページ)ドメインのページアクセス数を取得する。
まずは、Pythonで読み込んだファイルをPandasのDataFrameにしてjaドメイン、ja.mドメインのページ数を確認。
import pandas as pd
df = pd.read_csv('./pageviews-20210330-090000', header=None, quotechar="'", delim_whitespace=True)
# jaとja.m(モバイル用ページ)ドメインのみにする
df = df[df[df.columns[0]].isin(['ja', 'ja.m'])]
# ドメインごとのページ数
print(df[df.columns[0]].value_counts())
各ドメインのページ数はそれぞれ約24万ページ。ja.mドメインとjaドメインで同じタイトルのページがあるので、タイトルごとにアクセス数をまとめて、jaドメイン、ja.mドメインをあわせたアクセス数上位20ページを表示。
import pandas as pd
df = pd.read_csv('./pageviews-20210330-090000', header=None, quotechar="'", delim_whitespace=True)
# jaとja.m(モバイル用ページ)ドメインのみにする
df = df[df[df.columns[0]].isin(['ja', 'ja.m'])]
# 4つめの列を削除
df = df[df.columns[1:3]]
# タイトルごとに閲覧数を合算
grouped = df.groupby(df.columns[0]).sum()
# 閲覧数上位20ページ
print(grouped.sort_values(by=[grouped.columns[0]], ascending=False).head(20))結果は以下の通り。スエズ運河などちょうど話題になっていることや、著名人やアニメのページのアクセス数が多い。それらに混じって競走馬のページがアクセス数上位にある。
ちなみに、特定ページのアクセス数を確認したいだけなら、ページビュー分析を使うのが簡単。
0 件のコメント:
コメントを投稿