Pythonのデータサイエンス用のツールを使いこなすための実用的な情報が詰め込まれたリファレンスの待望の改訂版です。IPythonとJupyter、NumPy、pandas、Matplotlib、scikit-learnを利用し、データの操作、可視化、行列計算、時系列解析、統計分析、機械学習、データモデルの構築、複雑な科学計算まで、幅広いトピックをカバー。それぞれのトピックについて、押さえておくべき基本、tips、便利なコマンドなどを紹介します。Pythonでデータ処理を行う人にとってはいつも手元に置いておきたい「使える」一冊です。
Pythonデータサイエンスハンドブック 第2版
―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習
Jake VanderPlas 著、菊池 彰 訳
- TOPICS
- Data Science , Python
- 発行年月日
- 2024年02月
- PRINT LENGTH
- 576
- ISBN
- 978-4-8144-0063-8
- 原書
- Python Data Science Handbook, 2nd Edition
- FORMAT
- Print PDF EPUB
目次
『Python Data Science Handbook, Second Edition』への称賛
訳者まえがき
はじめに
Ⅰ部 Jupyter:Pythonより優れたPython
1章 IPython、Jupyter入門
1.1 IPythonシェルの起動
1.2 Jupyter Notebookの起動
1.3 IPythonのヘルプシステムとドキュメント
1.3.1 ?文字を使ったドキュメントの検索
1.3.2 ??文字を使ったソースコードの探索
1.3.3 Tab補完を使ったモジュールの調査
1.4 IPythonシェルのキーボードショートカット
1.4.1 ナビゲーションショートカット
1.4.2 テキスト入力ショートカット
1.4.3 コマンド履歴ショートカット
1.4.4 その他のショートカット
2章 強化された対話機能
2.1 IPython Magicコマンド
2.1.1 外部コードの実行:%run
2.1.2 コードの実行時間計測:%timeit
2.1.3 Magicコマンドのヘルプ:?、%magic、%lsmagic
2.2 入力と出力の履歴
2.2.1 IPythonのIn/Outオブジェクト
2.2.2 アンダースコアショートカットと過去の出力
2.2.3 出力の抑止
2.2.4 関連するMagicコマンド
2.3 IPythonとシェルコマンド
2.3.1 シェルの概要
2.3.2 IPythonからのシェルコマンド実行
2.3.3 シェルとの値の受け渡し
2.3.4 シェルに関連するMagicコマンド
3章 デバッグとプロファイル
3.1 エラーとデバッグ
3.1.1 例外の制御:%xmode
3.1.2 デバッグ:トレースバックの情報では不十分な場合
3.2 コードのプロファイリングと実行時間の計測
3.2.1 コード断片の実行時間を計測する:%timeitと%time
3.2.2 コード全体のプロファイリング:%prun
3.2.3 %lprunによる行単位のプロファイリング
3.2.4 メモリのプロファイリング:%memitと%mprun
3.3 その他のIPythonリソース
3.3.1 Webリソース
3.3.2 書籍
Ⅱ部 NumPyの基礎
4章 Pythonのデータ型
4.1 単なる整数ではないPythonの整数
4.2 単なるリストではないPythonのリスト
4.3 Pythonの型固定配列
4.4 PythonリストからNumPy配列作成
4.5 NumPy配列の作成
4.6 NumPyの標準データ型
5章 NumPy配列の基礎
5.1 NumPy配列の属性
5.2 配列インデクス:配列の要素にアクセスする
5.3 配列のスライス:部分配列にアクセスする
5.3.1 1次元配列のスライス
5.3.2 多次元配列のスライス
5.3.3 コピーではなくビューである部分配列
5.3.4 配列のコピー
5.4 配列の形状変更
5.5 配列の連結と分割
5.5.1 配列の連結
5.5.2 配列の分割
6章 NumPy配列の計算:ユニバーサル関数
6.1 低速なループ処理
6.2 ufuncの基礎
6.3 NumPy ufuncの探求
6.3.1 配列演算
6.3.2 絶対値
6.3.3 三角関数
6.3.4 指数関数と対数関数
6.3.5 専門的なufunc
6.4 高度なufuncの機能
6.4.1 出力の指定
6.4.2 集約
6.4.3 直積
6.5 ufunc:より詳しく
7章 集約:最大、最小、その他データの性質を表すもの
7.1 配列の合計
7.2 最大と最小
7.2.1 多次元配列の集約
7.2.2 その他の集約関数
7.3 事例:米国大統領の平均身長は?
8章 配列の計算:ブロードキャスト
8.1 ブロードキャストの基礎
8.2 ブロードキャストのルール
8.2.1 ブロードキャスト例1
8.2.2 ブロードキャスト例2
8.2.3 ブロードキャスト例3
8.3 ブロードキャストの実践
8.3.1 配列のセンタリング
8.3.2 2次元関数のプロット
9章 比較、マスク、ブール論理
9.1 事例:雨天日数
9.2 ufuncの比較演算子
9.3 ブール値配列の操作
9.3.1 要素のカウント
9.3.2 ブール演算子
9.4 マスクとしてのブール値配列
9.5 キーワードと演算子(andとor、&と|)
10章 ファンシーインデクス
10.1 ファンシーインデクスの探求
10.2 インデクスの組み合わせ
10.3 事例:ランダムポイントの選択
10.4 ファンシーインデクスを使った値の変更
10.5 事例:ヒストグラム化のためのデータ分類
11章 配列のソート
11.1 NumPyの高速ソート:np.sortとnp.argsort
11.2 行または列に沿ったソート
11.3 部分ソート:分割(partitioning)
11.4 事例:k近傍法
12章 構造化データ:NumPyの構造化配列
12.1 構造化配列の作成方法
12.2 より高度な複合型
12.3 RecordArrays:構造化配列の変形版
12.4 pandasへ
Ⅲ部 pandasによるデータ操作
13章 pandasオブジェクトの基礎
13.1 Seriesオブジェクト
13.1.1 一般化したNumPy配列としてのSeries
13.1.2 特殊な辞書としてのSeries
13.1.3 Seriesオブジェクトの作成
13.2 DataFrameオブジェクト
13.2.1 一般化したNumPy配列としてのDataFrame
13.2.2 特殊な辞書としてのDataFrame
13.2.3 DataFrameオブジェクトの作成
13.3 Indexオブジェクト
13.3.1 不変配列としてのIndex
13.3.2 順序付き集合(set)としてのIndex
14章 インデクスとデータの選択
14.1 Seriesのデータ選択
14.1.1 辞書としてのSeries
14.1.2 1次元配列としてのSeries
14.1.3 インデクス属性:locとiloc
14.2 DataFrameのデータ選択
14.2.1 辞書としてのDataFrame
14.2.2 2次元配列としてのDataFrame
14.2.3 その他のインデクス規則
15章 pandasデータの操作
15.1 ufunc:インデクスの保存
15.2 ufunc:インデクスの整列
15.2.1 Seriesオブジェクトのインデクス整列
15.2.2 DataFrameオブジェクトのインデクス整列
15.3 ufunc:DataFrameとSeriesとの演算
16章 欠損値の扱い
16.1 欠損値表現のトレードオフ
16.2 pandasの欠損値
16.2.1 特殊値None
16.2.2 数値データの欠損値NaN
16.2.3 pandasにおけるNaNとNone
16.3 null可能なdtype
16.4 null値が存在する場合の処理
16.4.1 null値の検出
16.4.2 欠損値の除外
16.4.3 欠損値への値設定
17章 階層型インデクス
17.1 多重インデクスを持つSeries
17.1.1 誤った方法
17.1.2 より良い方法:MultiIndex
17.1.3 多次元のMultiIndex
17.2 MultiIndexの作成手段
17.2.1 明示的なMultiIndexの作成
17.2.2 MultiIndexの階層名
17.2.3 列に対するMultiIndex
17.3 MultiIndexのインデクス指定とスライス
17.3.1 多重インデクスSeries
17.3.2 多重インデクスDataFrame
17.4 多重インデクスの並べ替え
17.4.1 ソートされたインデクスとソートされていないインデクス
17.4.2 インデクスのstackとunstack
17.4.3 インデクスの設定と再設定
18章 データセットの連結:concatとappend
18.1 再掲:NumPy配列の連結
18.2 pd.concatによる単純な連結
18.2.1 インデクスの重複
18.2.2 joinによる連結
18.2.3 appendメソッド
19章 データセットの連結:マージと結合
19.1 関係代数
19.2 結合の種類
19.2.1 1対1結合
19.2.2 多対1結合
19.2.3 多対多結合
19.3 キーの指定
19.3.1 onオプション
19.3.2 left_onとright_onオプション
19.3.3 left_indexとright_indexオプション
19.4 結合に対する集合演算の指定
19.5 列名の重複:suffixesオプション
19.6 事例:米国州データ
20章 集約とグループ化
20.1 惑星(planets)データ
20.2 pandasによる単純な集約
20.3 groupby:分割、適用、結合
20.3.1 分割、適用、結合
20.3.2 GroupByオブジェクト
20.3.3 集約、フィルタ、変換、適用
20.3.4 分割キーの指定
20.3.5 グループ化の例
21章 ピボットテーブル
21.1 ピボットテーブルの必要性
21.2 手作業のピボットテーブル作成
21.3 ピボットテーブルの構文
21.3.1 多重ピボットテーブル
21.3.2 その他のピボットテーブルオプション
21.4 事例:出生率データ
22章 文字列操作のベクトル化
22.1 pandas文字列操作の基礎
22.2 pandas文字列操作メソッドの一覧
22.2.1 Pythonの文字列メソッドと類似のメソッド
22.2.2 正規表現を使用するメソッド
22.2.3 その他のメソッド
22.3 事例:レシピデータベース
22.3.1 単純なレシピ推奨システム
22.3.2 さらにレシピについて
23章 時系列
23.1 Pythonの日付と時刻
23.1.1 Python組み込みの日付と時刻:datetimeとdateutil
23.1.2 時間の型付き配列:NumPyのdatetime64
23.1.3 pandasの日付と時刻:両者のいいとこ取り
23.2 pandasの時系列:時刻によるインデクス
23.3 pandasの時系列データ構造
23.4 規則的なシーケンス:pd.date_range
23.5 頻度とオフセット
23.6 再サンプリング、シフト、ウィンドウ
23.6.1 再サンプリングと頻度変換
23.6.2 時間シフト
23.6.3 移動するウィンドウ関数
23.7 事例:シアトル市の自転車数の可視化
23.7.1 データの可視化
23.7.2 データの深掘り
24章 ハイパフォーマンスpandas:evalとquery
24.1 queryとevalの必要性:複合表現
24.2 pandas.evalによる効率的実行
24.3 DataFrame.evalによる列単位の操作
24.3.1 DataFrame.evalを使用した代入
24.3.2 DataFrame.eval内のローカル変数
24.4 DataFrame.queryメソッド
24.5 パフォーマンス:これらの機能を使うべき場合
24.6 参考資料
Ⅳ部 Matplotlibによる可視化
25章 Matplotlibの基礎知識
25.1 Matplotlibのインポート
25.2 スタイルの設定
25.3 showするかshowしないか?描画を表示する方法
25.3.1 Pythonスクリプトからプロット
25.3.2 IPythonシェルからプロット
25.3.3 Jupyter Notebookからプロット
25.3.4 結果のファイル保存
25.3.5 同じ結果を得る2つのインターフェイス
26章 単純な線グラフ
26.1 プロットの制御:線の色とスタイル
26.2 プロットの制御:座標軸の範囲
26.3 プロットへのラベル付け
26.4 Matplotlib雑学
27章 単純な散布図
27.1 plt.plotを使った散布図
27.2 plt.scatterを使った散布図
27.3 plotメソッド対scatterメソッド:効率に関する注意点
27.4 誤差の可視化
27.4.1 基本的なエラーバー
27.4.2 連続誤差
28章 密度と等高線図
28.1 3次元関数の可視化
28.2 ヒストグラム、ビニング、密度
28.3 2次元のヒストグラムとビニング
28.3.1 plt.hist2d:2次元ヒストグラム
28.3.2 plt.hexbin:六角形のビニング
28.3.3 カーネル密度推定
29章 凡例のカスタマイズ
29.1 凡例要素の選択
29.2 点の大きさの凡例
29.3 複数の凡例
30章 カラーバーのカスタマイズ
30.1 カラーバーのカスタマイズ
30.1.1 カラーマップの選択
30.1.2 色の範囲制限と拡張
30.1.3 離散的カラーバー
30.2 事例:手書きの数字
31章 複数サブプロット
31.1 plt.axes:手作業によるサブプロット作成
31.2 plt.subplot:サブプロットの単純なグリッド
31.3 plt.subplots:グリッド全体を一度に作成
31.4 plt.GridSpec:より複雑な配置
32章 テキストと注釈
32.1 事例:米国出生率における休日の影響
32.2 テキスト位置の変換
32.3 矢印と注釈
33章 目盛のカスタマイズ
33.1 主目盛と補助目盛
33.2 非表示の目盛とラベル
33.3 目盛の増減
33.4 目盛フォーマットの調整
33.5 FormatterとLocatorのまとめ
34章 Matplotlibのカスタマイズ:設定とスタイルシート
34.1 手作業でカスタマイズ
34.2 デフォルトの変更:rcParams
34.3 スタイルシート
34.3.1 デフォルトスタイル
34.3.2 FiveThirtyEightスタイル
34.3.3 ggplot
34.3.4 ハッカーのためのベイジアンメソッドスタイル
34.3.5 暗い背景スタイル
34.3.6 グレースケール
34.3.7 seabornスタイル
35章 Matplotlibを使った3次元プロット
35.1 3次元の点と線
35.2 3次元等高線図
35.3 ワイヤーフレームとサーフェス
35.4 三角分割のサーフェス
35.5 事例:メビウスの帯の可視化
36章 seabornによる可視化
36.1 seabornプロットの調査
36.1.1 ヒストグラム、KDE、密度
36.1.2 ペアプロット
36.1.3 層別ヒストグラム
36.2 カテゴリプロット
36.2.1 結合分布
36.2.2 棒グラフ
36.3 事例:マラソンの完走時間の調査
36.4 その他のリソース
36.5 その他のPython用可視化ライブラリ
Ⅴ部 機械学習
37章 機械学習とは?
37.1 機械学習の分類
37.2 機械学習の定性的応用例
37.2.1 分類:離散ラベルの予測
37.2.2 回帰:連続ラベルの予測
37.2.3 クラスタリング:ラベルなしデータのラベル推定
37.2.4 次元削減:ラベルなしデータ構造の推定
37.3 まとめ
38章 scikit-learnの基礎
38.1 scikit-learnのデータ表現
38.1.1 特徴量行列
38.1.2 目的配列
38.2 scikit-learnの推定器API
38.2.1 APIの基礎
38.2.2 教師あり学習例:線形回帰
38.2.3 教師あり学習の事例:アイリスの分類
38.2.4 教師なし学習の事例:アイリス次元数
38.2.5 教師なし学習の例:アイリスクラスタリング
38.3 応用:手書き数字の調査
38.3.1 数字データの読み込みと可視化
38.3.2 教師なし学習:次元削減
38.3.3 数字の分類
38.4 まとめ
39章 ハイパーパラメータとモデルの検証
39.1 モデル検証に関する考察
39.1.1 誤ったモデル検証方法
39.1.2 正しいモデル検証方法:ホールドアウトセット
39.1.3 交差検証によるモデルの検証
39.2 最適なモデルの選択
39.2.1 バイアス-バリアンストレードオフ
39.2.2 scikit-learnを使用した検証曲線の作成
39.3 学習曲線
39.4 検証の実践:グリッドサーチ
39.5 まとめ
40章 特徴量エンジニアリング
40.1 カテゴリ特徴量
40.2 テキスト特徴量
40.3 画像特徴量
40.4 導出特徴量
40.5 欠損データの補完
40.6 特徴量パイプライン
41章 詳細:ナイーブベイズ分類
41.1 ベイズ分類
41.2 ガウシアンナイーブベイズ
41.3 多項分布ナイーブベイズ
41.3.1 事例:テキストの分類
41.4 ナイーブベイズをいつ使用すべきか
42章 詳細:線形回帰
42.1 単回帰
42.2 基底関数回帰
42.2.1 多項式基底関数
42.2.2 ガウス基底関数
42.3 正則化
42.3.1 リッジ回帰(L2正則化)
42.3.2 Lasso正則化(L1)
42.4 事例:自転車の交通量予測
43章 詳細:サポートベクターマシン
43.1 サポートベクターマシンの必要性
43.2 サポートベクターマシン:マージンの最大化
43.2.1 サポートベクターマシンへの当てはめ
43.2.2 線形には分類できないデータ:カーネルSVM
43.2.3 SVMの調整:ソフトマージン
43.3 事例:顔認識
43.4 まとめ
44章 詳細:決定木とランダムフォレスト
44.1 ランダムフォレストの必要性:決定木
44.1.1 決定木の作成
44.1.2 決定木と過剰適合
44.2 推定器の組み合わせ:ランダムフォレスト
44.3 ランダムフォレスト回帰
44.4 事例:ランダムフォレストによる文字認識
44.5 まとめ
45章 詳細:主成分分析
45.1 主成分分析の基礎
45.1.1 PCAによる次元削減
45.1.2 PCAによる可視化:手書き数字
45.1.3 成分の意味
45.1.4 成分数の選択
45.2 PCAによるノイズフィルタリング
45.3 事例:固有顔画像
45.4 まとめ
46章 詳細:多様体学習
46.1 多様体学習:HELLO
46.2 多次元尺度構成法(MDS)
46.2.1 多様体学習としてのMDS
46.2.2 非線形埋め込み:MDSがうまくいかない場合
46.3 非線形多様体:局所線形埋め込み
46.4 多様体学習に対する考察
46.5 事例:顔画像へのIsomap適用
46.6 事例:手書き数字構造の可視化
47章 詳細:k平均法クラスタリング
47.1 k平均法の基礎
47.2 k平均法アルゴリズム:期待値最大化法
47.3 事例
47.3.1 事例1:手書き数字に対するk平均法
47.3.2 事例2:k平均法による画像の減色
48章 詳細:混合ガウスモデル
48.1 混合ガウスモデルの必要性:k平均法の弱点
48.2 E-Mの一般化:混合ガウスモデル
48.3 共分散の選択
48.4 混合ガウスモデルによる密度推定
48.5 事例:GMMによるデータの生成
49章 詳細:カーネル密度推定
49.1 カーネル密度推定の必要性:ヒストグラム
49.2 カーネル密度推定の実践
49.3 交差検証によるバンド幅の選択
49.4 事例:単純ではないベイズ推定
49.4.1 カスタム推定器の解説
49.4.2 カスタム推定器の使用
50章 応用:顔検出パイプライン
50.1 HOG特徴量
50.2 HOGの実践:簡単な顔検出
1.「陽性」(positive)学習サンプルセットを取得する
2.「陰性」(negative)学習サンプルセットを取得する
3.データセットを組み合わせて、HOG特徴を抽出する
4.サポートベクターマシンの学習を行う
5.新しい画像の顔を認識する
50.3 課題と改善
50.4 機械学習をさらに学ぶためのリソース
索引