Azureデータ分析入門 #1 【はじめに】

## はじめに/対象者
**Excelのつらみ**を日々体感している以下のような方に向けて、Azureファミリーの便利なサービスを何記事かに分けてご紹介します。

- **非技術者**でデータを扱っている
- データの集計や可視化に、Excelを使っている
- とりあえず今やってる作業の効率化から進めたい
- 今より少し踏み込んだ分析ができるプラットフォームを探してる
- Excelのつらみ
    - vlookup関数やmatch関数を入れ子にしがち → **フリーズ**
    - データ量増大 → **フリーズ**
    - うっかりどこかの列を消去 → **N/Aを量産**
    - バージョン管理(ローカルでやる場合) → **………**

#### 連載目次
[Azureデータ分析入門 #1 【はじめに】](https://qiita.com/Catetin0310/items/a7ab83069fec5352b535) → 本記事はこちら
[Azureデータ分析入門 #2 【ツール比較 Excel編】](https://qiita.com/Catetin0310/items/d32c53305ab579d47950)
[Azureデータ分析入門 #3 【ツール比較 Azure Notebook編】](https://qiita.com/Catetin0310/items/ae3c5f3dca5b3315896d)
[Azureデータ分析入門 #4 【ツール比較 Databricks編】](https://qiita.com/Catetin0310/items/b6030d3ad0fde16e57ab)
[Azureデータ分析入門 #5 【Databricks → Power BI Desktop】](https://qiita.com/Catetin0310/items/eb8431f38a51641b0db1)
[Azureデータ分析入門 #6 【CSVデータ → Power BI サービス】](https://qiita.com/Catetin0310/items/4af00df1f0af5feda1bb)
Azureデータ分析入門 #7 【AutoML でタイタニック号の生存者予測】

## 流れ
Excelでの作業がどのくらいシンプルになるかを感じてもらうために、**簡易的にクロス集計を行って可視化**するまでを、下記3つのプラットフォームで同じようにやってみます。

- **Excel**
- **Azure Notebooks** (クラウド上のJupyter Notebook)
- **Databricks** (Sparkベースのデータ分析プラットフォーム)

同じ土俵での比較がそもそもナンセンスですが、ともかく無理やりやってみます。
いわゆるデータ分析前段の前処理を一部かじって、可視化する、までの範囲を行うことになります。
データ分析フローで言う、以下のセグメントを行うイメージ。

![data_analysis_flow_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/f1b3d75b-8311-96b9-9871-925e8f7eeba7.jpeg)

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

|-|スペック|費用|備考|
|:---|:--|:---|:----|
|**Excel**|Windows 10<br>CPU: Core i5-8250U<br>RAM: 16GB|ライセンスフィー|使用したローカルマシンのスペック|
|**Azure Notebook**|CPU: unknown<br>RAM: 4GB|無料|アップグレード可能だが今回は無償枠で。|
|**Databricks**|CPU: 4cores<br>RAM: 8GB<br>(0.5DBU)|約60円/時間|今回は最も安価なF4インスタンスを使用|



そのあと、ちょっと踏み込んだ内容として、

- **Databricks**に**Power BI**(Microsoft謹製データ可視化ツール)を接続
- タイタニック号の生存者分類 (Kaggleで有名なアレです) を**AutoML**にやらせてみる

をやってみます


## 使用データ
お手元のデータを使ってもらうのが一番いいのですが、初めてPythonやSparkに触れる人にとっては少しハードルが高いはず。そこで、

- **テーブルの定義が明確**
- **売上データがExcelで扱うことができるボリューム**
- **データ自体のイメージしやすい**

の条件を満たすデータとして、Kaggleで公開されている以下のデータセットを採用することにしました。

>[**Brazilian E-Commerce Public Dataset by Olist**](https://www.kaggle.com/olistbr/brazilian-ecommerce)

>- 概要
    - ブラジル市場最大のデパートの**eコマースストア**の公開データセット
    - 2016-2018年までの**10万件の注文データ**
    - 小売店はeコマースストアを通じて製品を販売、提携物流会社を用いて、顧客に直接商品を出荷
    - 製品を受け取る or 配達予定日が来ると、顧客はレビュー調査を電子メールで受け取る
    - 顧客は任意でレビューを書ける

>- Kaggleでの課題
    - 自然言語処理 (レビュー内容に対して)
    - 顧客クラスタリング (レビューの記載がない顧客の属性)
    - 製品クラスタリング (不満をもちやすい製品カテゴリ)
    - 売上予測
    - 配送料金最適化

## 課題設定
今回はシンプルに以下のような立て付けで課題設定します。

>- あなたは Olist のマーケティング担当者です。

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


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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/f7744622-ae87-50ba-922a-9fd3dcb78e74.png)

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

#### 1．売上明細データテーブル
左から、注文番号、注文番号ごと/製品IDごとに割り当てられる通し番号、製品ID、販売者ID、出荷期日、単価、送料です。今回参照するのは、製品ID、単価、送料の三点です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/98e081bf-e4ef-bf02-546e-d9f67e991dde.png)

#### 2．カテゴリデータテーブル
左から、製品ID、カテゴリ名(ポルトガル語)、製品名の長さ、製品明細の長さ、製品写真枚数、パッケージの重量、パッケージのサイズ(縦/横/深さ)です。今回は参照するのは、製品IDとカテゴリ名(ポルトガル語)の2点です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/0082c4a2-23d2-3eed-831d-5ebadb8d1024.png)

#### 3．翻訳データテーブル
カテゴリ名(ポルトガル語)とカテゴリ名(英語)の対応表です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/180df9b6-fea8-b2e2-1931-80427662b625.png)

## 中間テーブル概要
これらの3テーブルをキーとなっている値で紐づけて、中間テーブルを作ります。
単価と配送料の合計に占める配送料の割合を、各々の注文データで算出します。以下のようなイメージです。
![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/9118e8c0-6ba6-03c5-dea8-1f83c31c28c6.jpeg)

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

## 参考サイト
[Kaggle.com](https://www.kaggle.com/)
[Brazilian E-Commerce Public Dataset by Olist](https://www.kaggle.com/olistbr/brazilian-ecommerce)