Commentmatplotlibを利用して、20年間のクチコミデータを動的に可視化するこんにちは。アイスタイルアドベントカレンダー14日目は、R&D部のsugatoが担当します。普段は事業部から依頼を貰い、主にBigQueryを利用したデータ抽出業務やRedashというBIツールの活用、DigdagやEmbulkなどのETLアプリケーションを利用し、DWHとしてのBQ活用を進めています。今後もそういった業務に励んでいく予定ですが、今年の4月にアイスタイルに入社するまでは、データアナリストとしてのキャリアを2年ほど歩んできました。ここ最近はあまり改善提案に繋がる分析業務に時間を割けておらず、アドベントカレンダーを機に、何か可視化したいなと思ったのがこの記事のきっかけです。分析を行う場合は、何かしらのアクションをする、という前提で集計なりを行い、その結果を分かりやすく表示するためにグラフを作ることがほとんどです。正直なところアウトプットの解釈性はほぼ0です。データの都合上、マスキング等を行っていますのでご了承ください。D3.js(もどき)に関してTwitterやyoutube等で見かける機会が増えたのですが、リンク先のような棒グラフのランキングが入れ替わる動画を見たことがある人も多いのではないでしょうか?gapminderこれを見て面白そうだし、とりあえずやってみるか!となったのが今回のきっかけです。もどき、と記載したのは、本来Javascriptを利用するところをpythonのみで作成したためです。Notebook上からBigQueryの実行結果をdfに渡します。dialect='standard')作成したテーブルは下記のような形で縦持ちです。番号というのは商品カテゴリに対して色を指定する際に利用するのですが、Windows関数を用いてカテゴリごとに、日付の昇順に対して番号を振ったものです。18商品カテゴリ別に配色し、matplotlibで作画をする商品カテゴリ別の配色を作成してあげます。RGBで適当に渡しています。'#F20CF2']))全件表示する前に、1月分の結果を表示します。こちらでうまく実行できていれば、次の部分で動画にしていきます。商品カテゴリ別ごとのクチコミ件数を出しても良いのですが、上位20位までに限定しました。現在表示されているグラフを削除する。これにより、紙芝居として作画しています。fontsize=18)width=0.8draw_barchart_TOP20(1)以下、アニメーションの部分になります。ここで処理をループさせる回数を設定します。こちらを実行すると、下記のような形で結果が得られます。下の方に設定されたボタンを押すことで、表示スピードを変えることもできます。本来であれば、皆さんにボタンを押してもらったりカーソルを動かして楽しんでもらいたいのですが。データの都合上、その部分はカットしています。gifで結果を張り付けてみたので、紙芝居で動いている感じが伝われば嬉しいです。動的に可視化できましたが、じゃあここから読み取れることがあるか?といわれると少ないです。理由としては、月別の結果が流れてしまい傾向が読み取れないからだと思います。(そもそも商品カテゴリを隠してしまっていますし。)折れ線グラフや商品カテゴリ別の積み上げ棒グラフでも良いのですが、クチコミ件数の増減が明確に出てしまうため、ヒートマップを作成して何となく傾向を評価してみたいと思います。再度、BigQueryを利用して、ヒートマップを作成するためのデータを作成しました。SQLに慣れ過ぎて、pythonでのデータ加工を避けがちなのが自分の中で課題です。1年間の平均クチコミ数を集計した後に、該当月のクチコミ数に対する偏差値を算出しています。ある月に多くクチコミがされているのかを評価する上で、比較的多くの人に馴染みがあると思い採用しました。45こちらを下記のheatmap_dfに渡してあげます。snssns.heatmap(heatmap)右の縦軸が偏差値なので、白い方が1年の中で多くクチコミされている月になります。(1999年にサービスが開始されたため、1999、2000年のデータは評価対象外として省いています。)パッとこれを眺めると、3月、10月は1年の中でもクチコミをされている印象を受けます。2001年、2002年ごろは12月の偏差値が高いですが、サービスとして成長過程であったことが影響として大きいと思われます。1年を通して、徐々にクチコミ件数が増加していれば後半の12月は偏差値が高くなるはずなので。いうことが気になったりします。理由としては、商品を買う⇒クチコミを行う、という流れがメインであるはずだからです。(さらに考えると、あるユーザーが今までクチコミをしたことがない商品をどれだけ買ったのか?を評価する必要があるかもしれません。)分析を行う時は、比較項目や裏側で動いているロジックが近しいのか??を意識するようにしています。上記の内容を考慮して値をならした場合、このヒートマップも変化するかもしれませんね。あとがきクチコミのデータを動的に可視化する、というタイトルでお送りしましたが、手段ありきで分析を行うべきではないなと改めて感じました。紙芝居形式なので思ったよりもぬるぬる動かず、フロント側で綺麗に表示させたい欲が強まりました。ファイル一つで動的に可視化したデータを共有できるのは良いなあと思います。私自身アイスタイルへ中途入社を決めた理由は、ECや実際の店舗での購買ログ、Webやアプリのアクセスログを横断的に分析できるプラットホームに魅力を感じたためでした。ここ最近は基盤などの整備を優先的に行っていますが、横断的な分析も進めてたいと思っています。正直なところ人がまだまだ足りない、というのが現状です。興味を持たれた方は、下のリンクからエントリーしてみてください。2019」15日目は、bannotさんの「非ツイッター民が黒い画面からツイートしてみた件について」です。非ツイッター民が黒い画面からツイートしてみた件についてsugato2019年4月中途入社。データ分析業務に携わってきましたが、現在は分析基盤の構築や整備を担当。日本酒好きなヤクルトファン。IT」の未来に挑戦したいエンジニアを積極的に採用しております。ご興味を持って頂けた方は下記リンクからご応募下さい。SiteOrigin.。