SQLではじめるデータ分析

―クエリで行う前処理、時系列解析、コホート分析、テキスト分析、異常検知

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
352
ISBN
978-4-8144-0020-1
原書
SQL for Data Analysis
FORMAT
Print PDF EPUB
Ebook
3,740円
Ebookを購入する
Print
3,740円

クラウドの普及とともに、SQLの利用範囲は拡大し、データサイエンティストもデータベースを直接扱う機会が増えています。本書は、データ分析に関わるSQLのテクニックを学び、分析プロセスにおいてSQLを最大限に活用するためのものです。時系列解析などでは、SQLが日付・時刻の比較や処理に長けており、威力を発揮できる最たるものです。本書ではデータの前処理から始め、時系列解析、コホート分析、テキスト分析、異常検知など、SQLの操作を通じて高度なテクニックまで学ぶことができる構成になっています。サンプルコードはGitHubからダウンロード可能で、実際に手を動かしながら学ぶことができます。

関連ファイル

目次

はじめに

1章 SQLによる分析
    1.1 データ分析とは
    1.2 なぜSQLなのか
        1.2.1 SQLとは
        1.2.2 SQLの利点
        1.2.3 SQL vs. R/Python
        1.2.4 データ分析ワークフローの一部としてのSQL
    1.3 データベースの種類とその扱い方
        1.3.1 行ストアデータベース
        1.3.2 列ストアデータベース
        1.3.3 他の種類のデータインフラストラクチャ
    1.4 まとめ

2章 分析用のデータの前処理を行う
    2.1 データの種類
        2.1.1 データベースのデータ型
        2.1.2 構造化と非構造化
        2.1.3 量的データと質的データ
        2.1.4 ファーストパーティデータ、セカンドパーティデータ、サードパーティデータ
        2.1.5 疎なデータ
    2.2 SQLクエリ構造
    2.3 プロファイリング:分布
        2.3.1 ヒストグラムと度数
        2.3.2 ビニング
        2.3.3 n分位
    2.4 プロファイリング:データ品質
        2.4.1 重複の検出
        2.4.2 GROUP BYとDISTINCTを使った重複排除
    2.5 準備:データクリーニング
        2.5.1 CASE式を使ったデータのクリーニング
        2.5.2 型変換とキャスト
        2.5.3 nullの扱い:coalesce、nullif、nvl関数
        2.5.4 欠損データ
    2.6 準備:データの整形
        2.6.1 出力の目的:BI、可視化、統計学、ML
        2.6.2 CASE式を使ったピボット
        2.6.3 UNION文を使ったアンピボット
        2.6.4 ピボット関数とアンピボット関数
    2.7 まとめ

3章 時系列解析
    3.1 日付、日時、時間の操作
        3.1.1 タイムゾーン変換
        3.1.2 日付とタイムスタンプのフォーマット変換
        3.1.3 日付計算
        3.1.4 時間計算
        3.1.5 異なるソースからデータを結合する
    3.2 小売売上高データセット
    3.3 データのトレンドを探る
        3.3.1 単純なトレンド
        3.3.2 構成要素の比較
        3.3.3 全体に占める割合の計算
        3.3.4 時間経過に伴う割合変化を把握するための指標化
    3.4 移動窓
        3.4.1 移動窓の計算
        3.4.2 疎なデータにおける移動窓
        3.4.3 累積値の計算
    3.5 季節性の分析
        3.5.1 期間比較:YoYとMoM
        3.5.2 期間比較:前年同月比
        3.5.3 過去の複数の期間との比較
    3.6 まとめ

4章 コホート分析
    4.1 コホート:便利な分析フレームワーク
    4.2 議員データセット
    4.3 リテンション
        4.3.1 基本的なリテンション曲線のためのSQL
        4.3.2 時系列を調整してリテンションの正確性を高める
        4.3.3 時系列自体から導かれたコホート
        4.3.4 別のテーブルによるコホートの定義
        4.3.5 疎なコホートへの対応
        4.3.6 最初の日付以外の日付からのコホートの定義
    4.4 関連するコホート分析
        4.4.1 サバイバーシップ
        4.4.2 リターンシップ(リピート購買行動)
        4.4.3 累積計算
    4.5 コホート視点でのクロスセクション分析
    4.6 まとめ

5章 テキスト分析
    5.1 SQLでテキスト分析を行う理由
        5.1.1 テキスト分析とは
        5.1.2 テキスト分析にSQLが適している理由
        5.1.3 SQLが適していない場合
    5.2 UFO目撃データセット
    5.3 テキストの特徴
    5.4 テキストのパース
    5.5 テキストの変換
    5.6 さらに大きなテキストブロック内の要素を探す
        5.6.1 ワイルドカードマッチ:LIKE、ILIKE
        5.6.2 完全一致:IN、NOT IN
        5.6.3 正規表現
    5.7 テキストの作成と形状変更
        5.7.1 連結
        5.7.2 テキストの形状変更
    5.8 まとめ

6章 異常検知
    6.1 異常検知に対するSQLの機能と限界
    6.2 データセット
    6.3 外れ値の検出
        6.3.1 ソートを使って異常を探す
        6.3.2 パーセンタイルと標準偏差を求めて異常を探す
        6.3.3 グラフにして視覚的に異常を探す
    6.4 異常の種類
        6.4.1 異常値
        6.4.2 異常な回数や頻度
        6.4.3 データの不在による異常
    6.5 異常への対応
        6.5.1 調査
        6.5.2 除去
        6.5.3 代替値での置換
        6.5.4 リスケーリング
    6.6 まとめ

7章 実験分析
    7.1 SQLを使った実験分析の強みと限界
    7.2 データセット
    7.3 実験の種類
        7.3.1 二値の結果を伴う実験:カイ二乗検定
        7.3.2 連続的な結果を伴う実験:t検定
    7.4 実験の課題と欠陥のある実験を修復する方法
        7.4.1 バリアント割り当て
        7.4.2 外れ値
        7.4.3 タイムボックス
        7.4.4 反復暴露実験
    7.5 対照実験が不可能な場合:代替分析
        7.5.1 事前/事後分析
        7.5.2 自然実験分析
        7.5.3 閾値付近の母集団の分析
    7.6 まとめ

8章 分析用に複雑なデータセットを作成する
    8.1 複雑なデータセットにSQLを使う場合
        8.1.1 SQLを使うメリット
        8.1.2 代わりにELTに組み込むべき場合
        8.1.3 他のツールにロジックを入れるべき場合
    8.2 コードの整理
        8.2.1 コメント
        8.2.2 大文字化、インデント、丸括弧、その他の書式上の秘訣
        8.2.3 コードの保存
    8.3 計算の整理
        8.3.1 SQL句の評価順序を理解する
        8.3.2 サブクエリ
        8.3.3 一時テーブル
        8.3.4 共通テーブル式
        8.3.5 grouping sets
    8.4 データセットのサイズとプライバシーに関する懸念の管理
        8.4.1 %やmodを使ったサンプリング
        8.4.2 次元削減
        8.4.3 PIIとデータプライバシー
    8.5 まとめ

9章 まとめ
    9.1 ファネル分析
    9.2 解約、中断、その他の離脱の定義
    9.3 バスケット分析
    9.4 参考資料
        9.4.1 書籍とブログ
        9.4.2 データセット
    9.5 最後に

索引