Excel / Azure Notebook / Databricks で同じことをやってみる #1 【はじめに】

LINEで送る
Pocket

はじめに/対象者

Excelのつらみを日々体感している以下のような方に向けて、Azureファミリーの便利なサービスを何記事かに分けてご紹介します。
・非技術者でデータを扱っている
・データの集計や可視化に、Excelを使っている
・とりあえず今やってる作業の効率化から進めたい
・今より少し踏み込んだ分析ができるプラットフォームを探してる
・Excelのつらみ
 ・vlookup関数やmatch関数を入れ子にしがち → フリーズ
 ・データ量増大 → フリーズ
 ・うっかりどこかの列を消去 → N/Aを量産
 ・バージョン管理(ローカルでやる場合) → ………

流れ

Excelでの作業がどのくらいシンプルになるかを感じてもらうために、簡易的にクロス集計を行って可視化するまでを、下記3つのプラットフォームで同じようにやってみます。
・Excel
・Azure Notebooks (クラウド上のJupyter Notebook)
・Databricks (Sparkベースのデータ分析プラットフォーム)
同じ土俵での比較がそもそもナンセンスですが、ともかく無理やりやってみます。
いわゆるデータ分析前段の前処理を一部かじって、可視化する、までの範囲を行うことになります。
データ分析フローで言う、以下のセグメントを行うイメージ。

それぞれの作業環境は以下の通りです。スペックの単純比較はできませんが、メモリ数見てもらうだけでも、ずば抜けてハイスペックなものを使うわけではないのがわかると思います。

そのあと、ちょっと踏み込んだ内容として、
・DatabricksにPower BI(Microsoft謹製データ可視化ツール)を接続
・タイタニック号の生存者分類 (Kaggleで有名なアレです) をAutoMLにやらせてみる
をやってみます

使用データ

お手元のデータを使ってもらうのが一番いいのですが、初めてPythonやSparkに触れる人にとっては少しハードルが高いはず。そこで、
・テーブルの定義が明確
・売上データがExcelで扱うことができるボリューム
・データ自体のイメージしやすい
の条件を満たすデータとして、Kaggleで公開されている以下のデータセットを採用することにしました。
————-
Brazilian E-Commerce Public Dataset by Olist
・概要
ブラジル市場最大のデパートのeコマースストアの公開データセット
2016-2018年までの10万件の注文データ
小売店はeコマースストアを通じて製品を販売、提携物流会社を用いて、顧客に直接商品を出荷
製品を受け取る or 配達予定日が来ると、顧客はレビュー調査を電子メールで受け取る
顧客は任意でレビューを書ける
・Kaggleでの課題
自然言語処理 (レビュー内容に対して)
顧客クラスタリング (レビューの記載がない顧客の属性)
製品クラスタリング (不満をもちやすい製品カテゴリ)
売上予測
配送料金最適化
————-

課題設定

今回はシンプルに以下のような立て付けで課題設定します。
———–
・あなたは Olist のマーケティング担当者です。
・クリスマス商戦用に、配送料無料キャンペーンを検討中
 ・単価と配送料の合計に占める配送料の割合が高いカテゴリは避けたい
 ・クリスマスなので、比較的単価が高いカテゴリを選定したい
 ・ある程度売上ボリュームのある3つのカテゴリに絞り込みたい
・この課題を解決するために、以下のテーブルを用いて簡易分析し、結果を可視化する
 ・売上明細データ
 ・カテゴリデータ
 ・翻訳データ
・(小売店がOlistに支払う手数料は製品単価に比例しているものとする)
———–

テーブルスキーマ

まずこのデータセットに含まれる8つのテーブルの関係図を眺めてみましょう。
それぞれのテーブルはCSVデータで提供されます。
黄色が注文の製品データ、オレンジが注文の明細データです。この2テーブルがproduct_idで紐づいています。
今回はこれら2テーブルと翻訳テーブル、併せて3つのテーブルを使用します。

今回使用するテーブルを簡単に説明します。

1.売上明細データテーブル

左から、注文番号、注文番号ごと/製品IDごとに割り当てられる通し番号、製品ID、販売者ID、出荷期日、単価、送料です。今回参照するのは、製品ID、単価、送料の三点です。

2.カテゴリデータテーブル

左から、製品ID、カテゴリ名(ポルトガル語)、製品名の長さ、製品明細の長さ、製品写真枚数、パッケージの重量、パッケージのサイズ(縦/横/深さ)です。今回は参照するのは、製品IDとカテゴリ名(ポルトガル語)の2点です。

3.翻訳データテーブル

カテゴリ名(ポルトガル語)とカテゴリ名(英語)の対応表です

中間テーブル概要

これらの3テーブルをキーとなっている値で紐づけて、中間テーブルを作ります。
単価と配送料の合計に占める配送料の割合を、各々の注文データで算出します。以下のようなイメージです。

まとめ

さて、前置きはここで終わり。次回はこの作業をExcelでやってみたいと思います。お楽しみに!

参考サイト

Kaggle.com
Brazilian E-Commerce Public Dataset by Olist

LINEで送る
Pocket