Python と JavaScriptではじめるデータビジュアライゼーション

Webからデータを取得して整理・分析し可視化するまで一連の流れがわかる!

このような方におすすめ

Web開発者、学生、研究者、データを扱うすべての人
  • 著者Kyran Dale/嶋田 健志/木下 哲也
  • 定価4,180 (本体3,800 円+税)
  • B5変 500頁 2017/08発行
  • ISBN978-4-87311-808-6
  • 定価
  • ポイント0
  • 数量

※本体価格は変更される場合があります。
※通常2〜3営業日以内で発送いたします。
※取寄が可能な場合もございますのでお問合せください。

  • 概要
  • 主要目次
  • 詳細目次

本書はデータ可視化データフローを最初から終わりまでカバーします。生データを取得して、効率よく整理、分析を行い効果的な可視化を実現するには、さまざまなツールとテクニックが必要です。本書では場面によってPythonとJavaScriptを使い分け、それぞれの言語の強みを最大限利用します。具体的にはPythonのBeautifulSoupとScrapyでデータを取得、pandas, matplotlib, Numpyでデータ処理を行い、PythonのFlaskフレームワークを使ってデータを配信、D3.jsを使ってインタラクティブなWeb可視化を実現します。サンプル豊富な実践的な一冊です。

https://www.ohmsha.co.jp/book/9784873118086/

    
まえがき
はじめに

1章 開発環境の準備
1.1 本書で扱うコード
1.2 Python
1.2.1 Anaconda
1.2.2 Anacondaインストールの確認
1.2.3 追加ライブラリのインストール
1.2.4 仮想環境
1.3 JavaScript
1.3.1 CDN
1.3.2 ローカルへのライブラリのインストール
1.4 データベース
1.4.1 MongoDBのインストール
1.5 統合開発環境
1.6 まとめ

第I部 基本的なツールキット

2章 PythonとJavaScript間の言語学習の橋渡し
2.1 類似点と相違点
2.2 コードと対話する
2.2.1 Python
2.2.2 JavaScript
2.3 基本的な橋渡し作業
2.3.1 スタイルガイドPEP 8とuse strict
2.3.2 キャメルケースとアンダースコアの違い
2.3.3 モジュールのインポート、スクリプトのインクルード
2.3.4 名前空間の汚染を防ぐ
2.3.5 「Hello World!」の出力
2.3.6 簡単なデータ処理
2.3.7 文字列の作成
2.3.8 重要な空白と中括弧の違い
2.3.9 コメントとdocstring
2.3.10 変数の宣言var
2.3.11 文字列と数値
2.3.12 ブール値
2.3.13 データコンテナ:ディクショナリ(辞書)、オブジェクト、リスト、配列
2.3.14 関数
2.3.15 反復処理:forループと関数型の代替手法
2.3.16 条件分岐:if、else、elif、switch
2.3.17 ファイル入出力
2.3.18 クラスとプロトタイプ
2.4 実際の相違点
2.4.1 メソッドチェーン
2.4.2 リストの列挙
2.4.3 タプルの展開
2.4.4 コレクション
2.4.5 Underscore
2.4.6 関数型配列メソッドとリスト内包表記
2.4.7 Pythonのラムダ式とmap、reduce、filter
2.4.8 JavaScriptのクロージャとモジュールパターン
2.4.9 thisとthat
2.5 チートシート
2.6 まとめ

3章 Pythonにおけるデータの読み書き
3.1 ゆっくり行う
3.2 データの受け渡し
3.3 システムファイル
3.4 CSV、TSV、行/列データ形式
3.5 JSON
3.5.1 日付と時刻
3.6 SQL
3.6.1 データベースエンジンの作成
3.6.2 データベーステーブルの定義
3.6.3 セッションを使ったインスタンスの追加
3.6.4 データベースのクエリ
3.6.5 datasetを使った簡単なSQL
3.7 MongoDB
3.8 日付、時刻、複合データ
3.9 まとめ

4章 Web開発の基本
4.1 全体像
4.2 シングルページアプリケーション
4.3 ツールの準備
4.3.1 IDE、フレームワーク、ツールの神話
4.3.2 テキスト編集の主力ツール
4.3.3 開発ツールを備えたブラウザ
4.3.4 ターミナルとコマンドプロンプト
4.4 Webページの作成
4.4.1 HTTPを使ったページの配信
4.4.2 DOM
4.4.3 HTMLスケルトン
4.4.4 コンテンツのマークアップ
4.4.5 CSS
4.4.6 JavaScript
4.4.7 データ
4.5 Chromeのデベロッパーツール
4.5.1 Elementsタブ
4.5.2 Sourcesタブ
4.5.3 その他のツール
4.6 プレースホルダを含む基本的なページ
4.6.1 プレースホルダにコンテンツを埋める
4.7 SVG
4.7.1 要素
4.7.2 要素
4.7.3 円
4.7.4 CSSスタイルの適用
4.7.5 線、矩形、多角形
4.7.6 テキスト
4.7.7 パス
4.7.8 拡大縮小と回転
4.7.9 グループ
4.7.10 階層化と透明度
4.7.11 JavaScriptによるSVG
4.8 まとめ

第II部 データの取得

5章 PythonによるWebからのデータの取得
5.1 requestsライブラリを使ったWebデータの取得
5.2 requestsを使ったデータファイルの取得
5.3 PythonによるWeb APIからのデータの利用
5.3.1 requestsでのRESTful APIの使用
5.3.2 ノーベル賞データ可視化のための国データの取得
5.4 ライブラリを使ったWeb APIへのアクセス
5.4.1 Googleスプレッドシートの使用
5.4.2 TweepyによるTwitter APIの使用
5.5 データのスクレイピング
5.5.1 スクレイピングが必要な理由
5.5.2 BeautifulSoupとlxml
5.5.3 初めてのスクレイピング
5.6 スープの取得
5.7 タグの選択
5.7.1 選択パターンの作成
5.7.2 Webページのキャッシュ
5.7.3 受賞者国籍のスクレイピング
5.8 まとめ

6章 Scrapyを使った重量スクレイピング
6.1 Scrapyの準備
6.2 対象の設定
6.3 xpathを使った対象HTMLの設定
6.3.1 Scrapyシェルを使ったxpathのテスト
6.3.2 相対xpathを使った選択
6.4 最初のScrapyスパイダー
6.5 人物情報ページのスクレイピング
6.6 リクエストの連結とデータの作成
6.6.1 ページのキャッシュ
6.6.2 リクエストの作成(yeild)
6.7 Scrapyパイプライン
6.8 パイプラインを使ったテキストと画像のスクレイピング
6.8.1 複数のスパイダーでのパイプラインの指定
6.9 まとめ

第III部 pandasを使ったデータのクリーニングと探索

7章 NumPy入門
7.1 NumPy配列
7.1.1 配列の作成
7.1.2 配列のインデックス指定とスライス
7.1.3 基本操作
7.2 配列関数の作成
7.2.1 移動平均の計算
7.3 まとめ

8章 pandas入門
8.1 pandasがデータ可視化に最適である理由
8.2 pandasが開発された理由
8.3 異種データと測定値の分類
8.4 DataFrame
8.4.1 インデックス
8.4.2 行と列
8.4.3 グループの選択
8.5 DataFrameの作成と保存
8.5.1 JSON
8.5.2 CSV
8.5.3 Excelファイル
8.5.4 SQL
8.5.5 MongoDB
8.6 SeriesからDataFrameを作成する
8.7 パネル
8.8 まとめ

9章 pandasによるデータのクリーニング
9.1 ダーティデータに関する真実
9.2 データの調査
9.3 インデックスとpandasのデータ選択
9.3.1 複数行の選択
9.4 データのクリーニング
9.4.1 混合した型の検出
9.4.2 文字列の置換
9.4.3 行の削除
9.4.4 重複の検出
9.4.5 データのソート
9.4.6 重複の削除
9.4.7 欠損フィールドの処理
9.4.8 時刻と日付の処理
9.5 完成したclean_data関数
9.6 クリーニングしたデータセットの保存
9.6.1 DataFrameのマージ
9.7 まとめ

10章 Matplotlibを使ったデータの可視化
10.1 pyplotとオブジェクト指向Matplotlib
10.2 対話型セッションの開始
10.3 pyplotのグローバル状態を使った対話型プロット
10.3.1 Matplotlibの設定
10.3.2 図サイズの設定
10.3.3 ピクセルではなくポイント
10.3.4 ラベルと凡例
10.3.5 タイトルと軸ラベル
10.3.6 グラフの保存
10.4 図とオブジェクト指向Matplotlib
10.4.1 軸とサブプロット
10.5 プロットの種類
10.5.1 棒グラフ
10.5.2 散布図
10.6 Seaborn
10.6.1 FacetGrid
10.6.2 PairGrid
10.7 まとめ

11章 pandasを使ったデータ探索
11.1 探索の開始
11.2 pandasを使ったプロット
11.3 男女間の格差
11.3.1 グループのアンスタック
11.3.2 歴史的傾向
11.4 国の傾向
11.4.1 1人当たりの受賞者数
11.4.2 分野別の受賞数
11.4.3 受賞分布の歴史的傾向
11.5 受賞者の年齢と没年齢
11.5.1 受賞時の年齢
11.5.2 受賞者の没年齢
11.5.3 時代に伴う寿命の延長
11.6 受賞者の移住
11.7 まとめ

第IV部 データの配信

12章 データの配信
12.1 データの配信
12.1.1 Flaskファイルの構成
12.1.2 Flaskでのデータ配信
12.2 静的ファイルの配信
12.3 Flaskでの動的データ
12.3.1 FlaskでのシンプルなRESTful API
12.4 静的な配信を使うか動的な配信を使うか
12.5 まとめ

13章 FlaskにおけるRESTfulデータ
13.1 EveによるRESTful MongoDB API
13.1.1 AJAXを使ったAPIへのアクセス
13.2 可視化のためのデータ配信
13.3 Flask-RestlessによるRESTful SQL
13.3.1 APIの作成
13.3.2 CORSサポートの追加
13.3.3 APIでのクエリ操作
13.4 まとめ

第V部 D3を使ったデータの可視化

14章 ノーベル賞可視化のイメージ
14.1 対象者は誰か
14.2 可視化要素の選択
14.3 メニューバー
14.4 年別の受賞者数
14.5 選択した受賞国の地図
14.6 国別の受賞者を示す棒グラフ
14.7 選択した受賞者の一覧
14.7.1 写真付きの小さな人物情報ボックス
14.8 完成イメージ
14.9 まとめ

15章 可視化
15.1 準備
15.1.1 中核要素
15.1.2 ファイルの構成
15.1.3 データの配信
15.2 HTMLスケルトン
15.3 CSSスタイル指定
15.4 JavaScriptエンジン
15.4.1 スクリプトのインポート
15.4.2 基本的なデータの流れ
15.4.3 コアコード
15.4.4 ノーベル賞可視化の初期化
15.4.5 準備完了
15.4.6 データ駆動更新
15.4.7 Crossfilterによるデータのフィルタリング
15.5 ノーベル賞可視化アプリケーションの実行
15.6 まとめ

16章 D3入門−棒グラフ
16.1 課題の認識
16.2 セレクション
16.3 DOM要素の追加
16.4 D3の利用
16.5 D3のスケールを使った範囲の調整
16.5.1 定量的スケール
16.5.2 序数スケール
16.6 データバインディングによるD3能力の発揮
16.7 enterメソッド
16.8 バインディングされたデータへのアクセス
16.9 更新パターン
16.10 軸とラベル
16.11 遷移
16.12 まとめ

17章 各賞の可視化
17.1 フレームの作成
17.2 スケール
17.3 軸
17.4 受賞分野ラベル
17.5 データのネスト
17.6 ネストしたデータ結合による受賞者の追加
17.7 躍動感を与える遷移
17.8 まとめ

18章 D3を使った地図の作成
18.1 利用可能な地図
18.2 D3の地図データフォーマット
18.2.1 GeoJSON
18.2.2 TopoJSON
18.2.3 地図のTopoJSONへの変換
18.3 D3のgeo、投影法、パス
18.3.1 投影法
18.3.2 パス
18.3.3 経緯度線
18.4 要素を組み合わせる
18.5 地図の更新
18.6 値を示す丸印の追加
18.7 完成した地図
18.8 簡単なツールチップの作成
18.9 まとめ

19章 受賞者の表示
19.1 リストの作成
19.2 人物情報ボックスの作成
19.3 まとめ

20章 メニューバー
20.1 D3によるHTML要素の作成
20.2 メニューバーの作成
20.2.1 受賞分野セレクタの作成
20.2.2 性別セレクタの追加
20.2.3 国セレクタの追加
20.2.4 受賞者数メトリックラジオボタンの設置
20.3 まとめ

21章 終わりに
21.1 おさらい
第I部 基本的なツールキット
第II部 データの取得
第III部 pandasを使ったデータのクリーニングと探索
第IV部 データの配信
第V部 D3を使ったデータの可視化
21.2 今後の進展
21.2.1 ソーシャルメディアネットワークの可視化
21.2.2 LeafletとFoliumを使ったインタラクティブな地図作成
21.2.3 機械学習の可視化
21.3 最終的なまとめ

付録A 開発環境から本番環境への移行
A.1 最初のディレクトリ
A.2 構成
A.2.1 Flaskの構成
A.2.2 JavaScriptアプリケーションの構成
A.3 認証
A.4 Flaskアプリケーションのテスト
A.5 JavaScriptアプリケーションのテスト
A.6 Flaskアプリケーションのデプロイ
A.6.1 Apacheの構成
A.7 ロギングとエラー処理

索引