Wikipediaではページごとのアクセス数を公開している(Analytics Datasets: Pageviews)。1時間ごとにダンプファイルが作成されており、すべての言語のページアクセス数が一つのファイルにまとめられている。このファイルからPythonで日本語Wikipediaページのアクセス数を取得してみる。
環境
データのダウンロード
とりあえずファイルの中身を確認。半角スペース区切りで4列ある。Wikipedia pageviews analysisによると、1列目がドメインコード、2列目がページタイトル、3列目がアクセス数、4列目は今はメンテナンスされていないらしい。
各ドメインのページ数はそれぞれ約24万ページ。
結果は以下の通り。スエズ運河などちょうど話題になっていることや、著名人やアニメのページのアクセス数が多い。それらに混じって競走馬のページがアクセス数上位にある。
Pythonでページアクセス数を取得する
ダンプファイルのドメインコードは、言語とモバイル用ページなどの種類を表している(Analytics/Data Lake/Traffic/Pageviews)ようで、今回はja(PC用ページ)とja.m(モバイル用ページ)ドメインのページアクセス数を取得する。
まずは、Pythonで読み込んだファイルをPandasのDataFrameにしてjaドメイン、ja.mドメインのページ数を確認。
1 2 3 4 5 6 7 8 9 | 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()) |
ja.mドメインとjaドメインで同じタイトルのページがあるので、タイトルごとにアクセス数をまとめて、jaドメイン、ja.mドメインをあわせたアクセス数上位20ページを表示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 件のコメント:
コメントを投稿