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 機械学習をさらに学ぶためのリソース 索引