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 件のコメント:
コメントを投稿