2019年11月1日金曜日

話題の食べログの話

食べログの星が3.6と3.8の間に壁がある話を聞いたので,試しにサクッとグラフにした話です.スクレイピングで星を取得してヒストグラム書いてみました.なかなか普段スクレイピングなんてやらないのでだいぶ苦戦しましたがまあ何とか形にはなりました.以下のグラフ見てもらえればわかりますが,私がやった感じだとあんまり壁みたいなのはなかった気がします.下のグラフはx軸は星数,y軸が件数ですね.軸の設定がめんどくさかったのでラベルがV_VALになっていますが,そこに各店舗の星の数が格納されています.
今回は京都のお店を対象にしています.大阪と東京では既にグラフがありますので…
星3.6と3.8で数に大きな差はありますが,グラフはそこまで不自然な形はしてない気がします.もちろんこんなものはデータの抽出の仕方次第でいくらでも結果を変えれるので,これだけを見て食べログがどうとかこうとか言うつもりはありません.特に今回は食べログの口コミ数順に上位1200件を取ってきただけです.どの順番でデータを取るかにもよりますしね.

スクレイピングの方法をありのままに書くことはちょっとよろしくない気がするのであんまり書きませんが,proc httpでwebページをテキスト化して取得→要る部分だけデータセット化→sgplotでヒストグラムです.sgplotのヒストグラムとtextステートメントが同時に使えなかったので,グラフ内の3.6とかの文字列はsgannoでやっていますがたぶん他に手はあると思います.

/*
以下が実際にグラフを書いた時のプログラムです
V_OUTに星の数が,V_ANNOにグラフ内の文字列が入っています.
*/

%sganno ;   *--アノテート使う準備;

data V_ANNO ;
   
    %SGTEXT(label="↓3.6", x1=3.6, y1=215, drawspace="DATAVALUE") ;
    %SGTEXT(label="↓3.8", x1=3.8, y1=27 , drawspace="DATAVALUE", anchor="left") ;

run ;

title "京都のお店1200件 口コミ数順" ;
proc sgplot data=V_OUT sganno=V_ANNO ;
  histogram V_VAL / scale=count nbins=40;
  
  xaxis grid
        values=(3.0 to 5.0 by 0.2)
        offsetmin=0.05
        offsetmax=0.05
  ;
  yaxis offsetmax=0.05 ;
run ;