Pythonデータサイエンスハンドブック

―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

[cover photo]
TOPICS
Programming , Data Science , Database , Python
発行年月日
PRINT LENGTH
556
ISBN
978-4-87311-841-3
原書
Python Data Science Handbook
FORMAT
PDF
Print
4,620円
この商品は品切れ再入荷未定です

Pythonのデータサイエンス用のツールを使いこなし、効率よく仕事を進めるための、実用的な情報が詰め込まれたリファレンスです。IPythonとJupyter、NumPy、pandas、Matplotlib、scikit-learnをカバーします。それぞれのトピックについて、押さえておくべき基本、tips、便利なコマンドなどを紹介します。Pythonでデータの操作、変換、可視化、統計的処理、データモデルの構築、科学計算を行う人にとってはいつも手元に置いておきたい「使える」一冊です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第2刷正誤表


※2019年4月更新。3刷で修正済みです。

■p.x 下から9行目
【誤】ンスハンドブック』
【正】ンスハンドブック』)

■p.x 下から4行目
【誤】考慮べき点
【正】考慮すべき点

■p.7 下から9行目
【誤】ネームスペース
【正】名前空間

■p.8 下から1,2行目
【誤】1文字文
【正】1文字分

■p.18 下から13行目
【誤】ネームスペース
【正】名前空間

■p.33 2行目
【誤】渡ります。
【正】わたります。

■p.34 囲み6行目
【誤】ネームスペース
【正】名前空間

■p.37 下から5行目
【誤】ストには、
【正】ストは、

■p.64 図2-4
【誤】np.arrange
【正】np.arange

■p.85 下から8行目
【誤】並び替え
【正】並べ替え

■p.107 下から12行目
【誤】振舞います。
【正】振る舞います。

■p.120 10行目
【誤】割当てる
【正】割り当てる

■p.247 下から3行目
【誤】さまざまなで
【正】さまざまな

■p.282 下から7行目
【誤】目盛り
【正】目盛

■p.347 下から14行目
【誤】長さをを
【正】長さを

■p.519 「L」1,2行目
【誤】pregularization
【正】regularization

■p.519 「L」3行目
【誤】regularizationiz
【正】regularization

■p.528 左5行目
【誤】extracton
【正】extraction

第3刷正誤表

第3刷正誤表

2020年12月7日更新


p.69、脚注

【誤】
https://raw.githubusercontent.com/jakevdp/PythonDataScienceHandbook/master/notebooks/data/preident_heights.csv
【正】
https://raw.githubusercontent.com/jakevdp/PythonDataScienceHandbook/master/notebooks/data/Seattle2014.csv

目次

目次
訳者まえがき
はじめに

1章 IPython:Pythonより優れた Python
    1.1 シェルか notebookか
        1.1.1 IPythonシェルの起動
        1.1.2 Jupyter notebookの起動
    1.2 IPythonのヘルプシステムとドキュメント
        1.2.1 ?文字を使ったドキュメントの検索
        1.2.2 ??文字を使ったソースコードの探索
        1.2.3 Tab補完を使ったモジュールの調査
    1.3 IPythonシェルのキーボードショートカット
        1.3.1 ナビゲーションショートカット
        1.3.2 テキスト入力ショートカット
        1.3.3 コマンド履歴ショートカット
        1.3.4 その他のショートカット
    1.4 IPython Magicコマンド
        1.4.1 コードブロックのペースト: %pasteと %cpaste
        1.4.2 外部コードの実行: %run
        1.4.3 コードの実行時間計測: %timeit
        1.4.4 Magicコマンドのヘルプ: ?、%magic、%lsmagic
    1.5 入力と出力の履歴
        1.5.1 IPythonの Inオブジェクトと Outオブジェクト
        1.5.2 アンダースコアショートカットと過去の出力
        1.5.3 出力の抑止
        1.5.4 関連する Magicコマンド
    1.6 IPythonとシェルコマンド
        1.6.1 シェルの概要
        1.6.2 IPythonからのシェルコマンド実行
        1.6.3 シェルとの値の受け渡し
    1.7 シェルに関連する Magicコマンド
    1.8 エラーとデバッグ
        1.8.1 例外の制御: %xmode
        1.8.2 デバッグ:トレースバックの情報では不十分な場合
    1.9 コードのプロファイリングと実行時間計測
        1.9.1 コード断片の実行時間を測定する: %timeitと %time
        1.9.2 コード全体のプロファイリング: %prun
        1.9.3 %lprunによる行単位のプロファイリング
        1.9.4 メモリ使用のプロファイリング: %memitと %mprun
    1.10 その他の IPythonリソース
        1.10.1 ウェブリソース
        1.10.2 書籍

2章  NumPyの基礎
    2.1 Pythonのデータ型について
        2.1.1 単なる整数ではない Pythonの整数
        2.1.2 単なるリストではない Pythonのリスト
        2.1.3 Pythonの固定型配列
        2.1.4 Pythonのリストから作る配列
        2.1.5 配列の構築
        2.1.6 NumPyの標準データ型
    2.2 NumPy配列の基礎
        2.2.1 NumPy配列の属性
        2.2.2 配列インデクス:配列の要素にアクセスする
        2.2.3 配列のスライス:部分配列にアクセスする
        2.2.4 配列の形状変更
        2.2.5 配列の連結と分割
    2.3 NumPy配列の計算:ユニバーサル関数
        2.3.1 低速なループ処理
        2.3.2 ufuncの紹介
        2.3.3 NumPy ufuncの調査
        2.3.4 高度な ufuncの機能
        2.3.5 ufunc:より深く学ぶために
    2.4 集約:最大、最小、その他データの間にあるもの
        2.4.1 配列を合計する
        2.4.2 最大と最小
        2.4.3 事例:米国大統領の平均身長は?
    2.5 配列の計算:ブロードキャスト
        2.5.1 ブロードキャストの基礎
        2.5.2 ブロードキャストのルール
        2.5.3 ブロードキャストの実践
    2.6 比較、マスク、ブール論理
        2.6.1 事例:雨天日数
        2.6.2 ufuncの比較演算子
        2.6.3 ブール値配列の操作
        2.6.4 マスクとしてのブール値配列
    2.7 ファンシーインデクス
        2.7.1 ファンシーインデクスの調査
        2.7.2 インデクスの組み合わせ
        2.7.3 事例:ランダムポイントの選択
        2.7.4 ファンシーインデクスを使った値の変更
        2.7.5 事例:データのビニング
    2.8 配列のソート
        2.8.1 NumPyの高速ソート: np.sortと np.argsort
        2.8.2 部分ソート:分割(パーティショニング)
        2.8.3 事例: k近傍法
    2.9 構造化データ: NumPyの構造化配列
        2.9.1 構造化配列の作成
        2.9.2 より高度な複合型
        2.9.3 Record rrays:構造化配列の変形版
        2.9.4 pandasへ

3章 pandasを使ったデータ操作
    3.1 pandasのインストールと使用方法
    3.2 pandasオブジェクトの基礎
        3.2.1 Seriesオブジェクト
        3.2.2 DataFrameオブジェクト
        3.2.3 Indexオブジェクト
    3.3 インデクスとデータの選択
        3.3.1 Seriesのデータ選択
        3.3.2 DataFrameのデータ選択
    3.4 pandasデータの操作
        3.4.1 ufunc:インデクスの保存
        3.4.2 ufunc:インデクスの整列
        3.4.3 ufunc: DataFrameと Seriesとの演算
    3.5 欠損値の扱い
        3.5.1 欠損値表現のトレードオフ
        3.5.2 pandasの欠損値
        3.5.3 null値が存在する場合の処理
    3.6 階層型インデクス
        3.6.1 多重インデクスを持つ Series
        3.6.2 MultiIndexの作成方法
        3.6.3 MultiIndexのインデクス指定とスライス
        3.6.4 多重インデクスの並べ替え
        3.6.5 多重インデクスに基づいたデータ集約
    3.7 データセットの連結: concatとappend
        3.7.1 再掲: NumPy配列の連結
        3.7.2 pd.concatを使った単純な連結
    3.8 データセットの結合: mergeと join
        3.8.1 関係代数
        3.8.2 結合の種類
        3.8.3 キーの指定
        3.8.4 結合に対する集合演算の指定
        3.8.5 列名の重複: suffixesキーワード
        3.8.6 事例:米国州データ
    3.9 集約とグループ化
        3.9.1 惑星データ
        3.9.2 pandasによる単純な集約
        3.9.3 GroupBy:分割、適用、結合
    3.10 ピボットテーブル
        3.10.1 ピボットテーブルの必要性
        3.10.2 ピボットテーブルのマニュアル作成
        3.10.3 ピボットテーブルの文法
        3.10.4 事例:出生率データ
    3.11 文字列操作のベクトル化
        3.11.1 pandas文字列操作の基礎
        3.11.2 pandas文字列操作メソッドの一覧
        3.11.3 事例:レシピデータベース
    3.12 時系列
        3.12.1 Pythonの日付と時刻
        3.12.2 pandasの時系列:時刻によるインデクス
        3.12.3 pandasの時系列データ構造
        3.12.4 頻度とオフセット
        3.12.5 再サンプリング、シフト、窓
        3.12.6 さらに学ぶために
        3.12.7 事例:シアトル市の自転車数を可視化する
    3.13 ハイパフォーマンス pandas:eval()と query()
        3.13.1 query()と eval()の必要性:複合表現
        3.13.2 pandas.eval()による効率的実行
        3.13.3 DataFrame.eval ()による列単位の操作
        3.13.4 DataFrame.query()メソッド
        3.13.5 パフォーマンス:これらの機能を使うべき場合
    3.14 参考資料

4章 Matplotlibによる可視化
    4.1 Matplotlibの基礎知識
        4.1.1 matplotlibのインポート
        4.1.2 スタイルの設定
        4.1.3 show()するか show()しないか?描画を表示する方法
        4.1.4 プロット結果のファイル保存
    4.2 同じ結果を得る 2つのインターフェース
    4.3 単純な線グラフ
        4.3.1 プロットの制御:線の色とスタイル
        4.3.2 プロットの制御:座標軸の範囲
        4.3.3 プロットへのラベル付け
    4.4 単純な散布図
        4.4.1 plt.plotを使った散布図
        4.4.2 plt.scatterを使った散布図
        4.4.3 plotメソッド対 scatterメソッド:効率に関する注意点
    4.5 誤差の可視化
        4.5.1 基本的なエラーバー
        4.5.2 連続誤差
    4.6 密度と等高線図
        4.6.1 3次元関数の可視化
    4.7 ヒストグラム、ビニング、密度
        4.7.1 2次元のヒストグラムとビニング
    4.8 凡例のカスタマイズ
        4.8.1 凡例要素の選択
        4.8.2 点サイズの凡例
        4.8.3 複数の凡例
    4.9 カラーバーのカスタマイズ
        4.9.1 カラーバーのカスタマイズ
        4.9.2 事例:手書きの数字
    4.10 複数サブプロット
        4.10.1 plt.axes:サブプロットのマニュアル作成
        4.10.2 plt.subplot:サブプロットの単純なグリッド
        4.10.3 plt.subplots:グリッド全体を一度に作成する
        4.10.4 plt.GridSpec:より複雑な配置
    4.11 テキストと注釈
        4.11.1 事例:米国出生率における休日の影響
        4.11.2 テキスト位置の変換
        4.11.3 矢印と注釈
    4.12 目盛のカスタマイズ
        4.12.1 主目盛と補助目盛
        4.12.2 非表示の目盛とラベル
        4.12.3 目盛の増加と削減
        4.12.4 目盛フォーマットの調整
        4.12.5 FormatterとLocatorのまとめ
    4.13 Matplotlibのカスタマイズ:設定とスタイルシート
        4.13.1 手作業でカスタマイズ
        4.13.2 デフォルトの変更: rcParams
        4.13.3 スタイルシート
    4.14 Matplotlibを使った 3次元プロット
        4.14.1 3次元の点と線
        4.14.2 3次元等高線図
        4.14.3 ワイヤーフレームとサーフェス
        4.14.4 三角形分割のサーフェス
    4.15 Basemapを使った地理データの処理
        4.15.1 地図の投影法
        4.15.2 地図背景の描画
        4.15.3 地図上のデータプロット
        4.15.4 事例:カリフォルニア州の都市
        4.15.5 事例:地表気温データ
    4.16 Seabornによる可視化
        4.16.1 Seaborn対 Matplotlib
        4.16.2 Seabornプロットの探索
        4.16.3 事例:マラソンのゴール時間の調査
    4.17 その他のリソース
        4.17.1 Matplotlibリソース
        4.17.2 その他の Python用グラフィックライブラリ

5章 機械学習
    5.1 機械学習とは?
        5.1.1 機械学習の分類
        5.1.2 定性的な機械学習アプリケーションの例
        5.1.3 まとめ
    5.2 scikit-learnの紹介
        5.2.1 scikit-learnのデータ表現
        5.2.2 scikit-learnの推定器 API
        5.2.3 応用:手書き数字の調査
        5.2.4 まとめ
    5.3 ハイパーパラメータとモデルの検証
        5.3.1 モデル検証に関する考察
        5.3.2 最適なモデルの選択
        5.3.3 学習曲線
        5.3.4 検証の実践:グリッドサーチ
        5.3.5 まとめ
    5.4 特徴量エンジニアリング
        5.4.1 カテゴリ特徴量
        5.4.2 テキスト特徴量
        5.4.3 画像特徴量
        5.4.4 導出された特徴量
        5.4.5 不足しているデータの補完
        5.4.6 特徴パイプライン
    5.5 詳細:ナイーブベイズ分類
        5.5.1 ベイズ分類
        5.5.2 ガウシアンナイーブベイズ
        5.5.3 多項分布ナイーブベイズ
        5.5.4 ナイーブベイズをいつ使うべきか
    5.6 詳細:線形回帰
        5.6.1 単回帰
        5.6.2 基底関数回帰
        5.6.3 正則化
        5.6.4 事例:自転車の交通量予測
    5.7 詳細:サポートベクターマシン
        5.7.1 サポートベクターマシンの必要性
        5.7.2 サポートベクターマシン:マージンの最大化
        5.7.3 事例:顔認識
        5.7.4 サポートベクターマシンまとめ
    5.8 詳細:決定木とランダムフォレスト
        5.8.1 ランダムフォレストの必要性:決定木
        5.8.2 推定器の組み合わせ:ランダムフォレスト
        5.8.3 ランダムフォレスト回帰
        5.8.4 事例:ランダムフォレストによる文字認識
        5.8.5 ランダムフォレストまとめ
    5.9 詳細:主成分分析
        5.9.1 主成分分析の基礎
        5.9.2 PCAによるノイズフィルタリング
        5.9.3 事例:固有顔画像
        5.9.4 主成分分析まとめ
    5.10 詳細:多様体学習
        5.10.1 多様体学習: HELLO
        5.10.2 多次元尺度構成法
        5.10.3 多様体学習としての MDS
        5.10.4 非線形埋め込み: MDSがうまくいかない場合
        5.10.5 非線形多様体:局所線形埋め込み
        5.10.6 多様体学習に対する考察
        5.10.7 事例:顔画像への Isomap適用
        5.10.8 事例:手書き数字構造の可視化
    5.11 詳細: k平均法クラスタリング
        5.11.1 k平均法の基礎
        5.11.2 k平均法アルゴリズム:期待値最大化法
        5.11.3 事例
    5.12 詳細:ガウス混合モデル
        5.12.1 GMMの必要性: k平均法の弱点
        5.12.2 E-Mの一般化:ガウス混合モデル
        5.12.3 GMMによる密度推定
        5.12.4 事例: GMMによるデータの生成
    5.13 詳細:カーネル密度推定
        5.13.1 KDEの必要性:ヒストグラム
        5.13.2 カーネル密度推定の実践
        5.13.3 事例:球面上の KDE
        5.13.4 事例:単純ではないベイズ推定
    5.14 応用:顔検出パイプライン
        5.14.1 HOG特徴量
        5.14.2 HOGの実践:簡単な顔検出
        5.14.3 課題と改善
    5.15 機械学習をさらに学ぶためのリソース
        5.15.1 Pythonの機械学習
        5.15.2 機械学習一般

索引