Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Book description

NumPy、SciPy、pandas、Matplotlib、Jupyterをはじめ、高機能で使いやすい数学・科学計算用ライブラリが充実しているPythonは、科学計算、統計解析、機械学習のみならず、金融や経済分野でも広く利用されています。本書はPythonの代表的なデータ分析ツール、pandasの開発者Wes McKinneyによる、データ分析を行うための基本を網羅しています。すべてのサンプルコードはダウンロード可能で、Jupyter Notebookで対話的に試し、実際に手を動かしながら知識を確実なものにすることが可能です。Python 3に対応した待望の改訂版です。

Table of contents

  1. 目次
  2. 訳者まえがき (1/3)
  3. 訳者まえがき (2/3)
  4. 訳者まえがき (3/3)
  5. まえがき (1/3)
  6. まえがき (2/3)
  7. まえがき (3/3)
  8. 1章 はじめに
    1. 1.1 この本で説明する内容
      1. 1.1.1 どういうデータを扱うのか
    2. 1.2 なぜPythonをデータ分析に使うのか
      1. 1.2.1 「糊(グルー)」としてのPython
      2. 1.2.2 「2つの言語」問題を解決する
      3. 1.2.3 Pythonを使うべきではないケース
    3. 1.3 必須のPythonライブラリ
      1. 1.3.1 NumPy
      2. 1.3.2 pandas
      3. 1.3.3 Matplotlib
      4. 1.3.4 IPythonとJupyter
      5. 1.3.5 SciPy
      6. 1.3.6 scikit-learn
      7. 1.3.7 statsmodels
    4. 1.4 インストールとセットアップ
      1. 1.4.1 Windows
      2. 1.4.2 Apple(macOS)
      3. 1.4.3 GNU/Linux
      4. 1.4.4 Pythonパッケージのインストールとアップデート
      5. 1.4.5 Python 2とPython 3
      6. 1.4.6 統合開発環境(IDE)とテキストエディタ
    5. 1.5 コミュニティとカンファレンス
    6. 1.6 この本の案内
      1. 1.6.1 コード例
      2. 1.6.2 例で使用しているデータ
      3. 1.6.3 インポートにおける慣習
      4. 1.6.4 専門用語(ジャーゴン、Jargon)
  9. 2章 Pythonの基礎、IPythonとJupyter Notebook
    1. 2.1 Pythonインタプリタ
    2. 2.2 IPythonの基礎
      1. 2.2.1 IPythonシェルの起動
      2. 2.2.2 Jupyter Notebookの実行
      3. 2.2.3 タブ補完
      4. 2.2.4 イントロスペクション
      5. 2.2.5 %runコマンド
      6. 2.2.6 クリップボード経由の実行
      7. 2.2.7 IPythonのキーボードショートカット
      8. 2.2.8 マジックコマンド
      9. 2.2.9 Matplotlibとの連携
    3. 2.3 Pythonの基礎
      1. 2.3.1 セマンティクス
      2. 2.3.2 スカラー型 (1/2)
      3. 2.3.2 スカラー型 (2/2)
      4. 2.3.3 制御フロー (1/2)
      5. 2.3.3 制御フロー (2/2)
  10. 3章 Python組み込みのデータ構造と関数、ファイルの扱い
    1. 3.1 データ構造とシーケンス
      1. 3.1.1 タプル
      2. 3.1.2 リスト
      3. 3.1.3 組み込みのシーケンス関数
      4. 3.1.4 ディクショナリ
      5. 3.1.5 セット
      6. 3.1.6 リスト、セット、ディクショナリの内包表記
    2. 3.2 関数
      1. 3.2.1 名前空間、スコープ、ローカル関数
      2. 3.2.2 複数の値を戻す
      3. 3.2.3 関数はオブジェクトである
      4. 3.2.4 無名(ラムダ)関数
      5. 3.2.5 カリー化:引数の部分適用
      6. 3.2.6 ジェネレータ
      7. 3.2.7 エラーと例外の処理
    3. 3.3 ファイルとオペレーティングシステム
      1. 3.3.1 ファイルにおけるバイトとUnicode
    4. 3.4 まとめ
  11. 4章 NumPyの基礎: 配列とベクトル演算
    1. 4.1 NumPy ndarray:多次元配列オブジェクト
      1. 4.1.1 ndarrayの生成
      2. 4.1.2 ndarrayのデータ型
      3. 4.1.3 ndarrayの算術演算
      4. 4.1.4 インデックス参照とスライシングの基礎 (1/2)
      5. 4.1.4 インデックス参照とスライシングの基礎 (2/2)
      6. 4.1.5 ブールインデックス参照
      7. 4.1.6 ファンシーインデックス参照
      8. 4.1.7 転置行列、行と列の入れ替え
    2. 4.2 ユニバーサル関数:すべての配列要素への関数適用
    3. 4.3 ndarrayによる配列指向プログラミング
      1. 4.3.1 条件制御のndarrayでの表現
      2. 4.3.2 数学関数、統計関数
      3. 4.3.3 真偽値配列関数
      4. 4.3.4 ソート
      5. 4.3.5 集合関数:uniqueなど
    4. 4.4 ndarrayのファイル入出力
    5. 4.5 行列計算
    6. 4.6 擬似乱数生成
    7. 4.7 例:ランダムウォーク
      1. 4.7.1 多重ランダムウォーク
    8. 4.8 まとめ
  12. 5章 pandas入門
    1. 5.1 pandasのデータ構造
      1. 5.1.1 シリーズ(Series)
      2. 5.1.2 データフレーム(DataFrame) (1/2)
      3. 5.1.2 データフレーム(DataFrame) (2/2)
      4. 5.1.3 インデックスオブジェクト
    2. 5.2 pandasの重要な機能
      1. 5.2.1 再インデックス付け
      2. 5.2.2 軸から要素を削除する
      3. 5.2.3 インデックス参照、選択、フィルタリング
      4. 5.2.4 整数のインデックス
      5. 5.2.5 算術とデータの整形 (1/2)
      6. 5.2.5 算術とデータの整形 (2/2)
      7. 5.2.6 関数の適用とマッピング
      8. 5.2.7 ソートとランク
      9. 5.2.8 重複したラベルを持つ軸のインデックス
    3. 5.3 要約統計量の集計と計算
      1. 5.3.1 相関と共分散
      2. 5.3.2 一意な値、頻度の確認、所属の確認
    4. 5.4 まとめ
  13. 6章 データの読み込み、 書き出しとファイル形式
    1. 6.1 テキスト形式のデータの読み書き
      1. 6.1.1 テキストファイルを少しずつ読み込む
      2. 6.1.2 テキスト形式でのデータの書き出し
      3. 6.1.3 区切り文字で区切られた形式を操作する
      4. 6.1.4 JSONデータ
      5. 6.1.5 XMLとHTML:ウェブスクレイピング
    2. 6.2 バイナリデータ形式
      1. 6.2.1 HDF5形式の使用
      2. 6.2.2 Microsoft Excelファイルの読み込み
    3. 6.3 Web APIを用いたデータの取得
    4. 6.4 データベースからのデータの取得
    5. 6.5 まとめ
  14. 7章 データのクリーニングと前処理
    1. 7.1 欠損値の取り扱い
      1. 7.1.1 欠損値を削除する
      2. 7.1.2 欠損値を穴埋めする
    2. 7.2 データの変形
      1. 7.2.1 重複の除去
      2. 7.2.2 関数やマッピングを用いたデータの変換
      3. 7.2.3 値の置き換え
      4. 7.2.4 軸のインデックスの名前を変更する
      5. 7.2.5 離散化とビニング
      6. 7.2.6 外れ値の検出と除去
      7. 7.2.7 順列(ランダムな並べ替え)やランダムサンプリング
      8. 7.2.8 標識変数やダミー変数の計算
    3. 7.3 文字列操作
      1. 7.3.1 文字列オブジェクトのメソッド
      2. 7.3.2 正規表現
      3. 7.3.3 pandasにおける文字列関数のベクトル化
    4. 7.4 まとめ
  15. 8章 データラングリング: 連結、結合、変形
    1. 8.1 階層型インデックス
      1. 8.1.1 階層の順序変更やソート
      2. 8.1.2 階層ごとの要約統計量
      3. 8.1.3 データフレームの列をインデックスに使う
    2. 8.2 データセットの結合とマージ
      1. 8.2.1 データフレームをデータベース風に結合する
      2. 8.2.2 インデックスによるマージ
      3. 8.2.3 軸に沿った連結 (1/2)
      4. 8.2.3 軸に沿った連結 (2/2)
      5. 8.2.4 重複のあるデータの結合
    3. 8.3 変形とピボット操作
      1. 8.3.1 階層型インデックスによる変形
      2. 8.3.2 「縦持ち」フォーマットから「横持ち」フォーマットへのピボット
      3. 8.3.3 「横持ち」フォーマットから「縦持ち」フォーマットへのピボット
    4. 8.4 まとめ
  16. 9章 プロットと可視化
    1. 9.1 Matplotlib APIの概要
      1. 9.1.1 図とサブプロット
      2. 9.1.2 色、マーカー、線種
      3. 9.1.3 目盛り、ラベル、凡例
      4. 9.1.4 サブプロットへの注釈や描画
      5. 9.1.5 プロットのファイルへの保存
      6. 9.1.6 Matplotlibの設定
    2. 9.2 pandasとseabornのプロット関数
      1. 9.2.1 折れ線グラフ
      2. 9.2.2 棒グラフ (1/2)
      3. 9.2.2 棒グラフ (2/2)
      4. 9.2.3 ヒストグラムと密度プロット
      5. 9.2.4 散布図
      6. 9.2.5 ファセットグリッドとカテゴリ型データ
    3. 9.3 その他のPython用可視化ツール
    4. 9.4 まとめ
  17. 10章 データの集約とグループ演算
    1. 10.1 GroupByの仕組み
      1. 10.1.1 グループをまたいだ繰り返し
      2. 10.1.2 列や列の集合の選択
      3. 10.1.3 ディクショナリやシリーズのグループ化
      4. 10.1.4 関数を使ったグループ化
      5. 10.1.5 インデックス階層によるグループ化
    2. 10.2 データの集約
      1. 10.2.1 列に複数の関数を適用する
      2. 10.2.2 集約されたデータを行インデックスなしで戻す
    3. 10.3 applyメソッド:一般的な分離−適用−結合の方法
      1. 10.3.1 グループキーの抑制
      2. 10.3.2 分位点とビン分析
      3. 10.3.3 例:グループ固有の値で欠損値を埋める
      4. 10.3.4 例:ランダムサンプリングと順列
      5. 10.3.5 例:グループの加重平均と相関
      6. 10.3.6 例:グループ指向の線形回帰
    4. 10.4 ピボットテーブルとクロス集計
      1. 10.4.1 クロス集計:crosstabメソッド
    5. 10.5 まとめ
  18. 11章 時系列データ
    1. 11.1 日付、時間のデータ型とツール
      1. 11.1.1 文字列とdatetimeの変換
    2. 11.2 時系列の基本
      1. 11.2.1 インデックス参照、データの選択、サブセットの抽出
      2. 11.2.2 重複したインデックスを持つ時系列
    3. 11.3 日付範囲、頻度、シフト
      1. 11.3.1 日付範囲の生成
      2. 11.3.2 頻度と日付オフセット
      3. 11.3.3 データの前方と後方へのシフト
    4. 11.4 タイムゾーンを扱う
      1. 11.4.1 タイムゾーンのローカライゼーションと変換
      2. 11.4.2 タイムゾーンを考慮したタイムスタンプオブジェクト
      3. 11.4.3 別のタイムゾーンとの演算
    5. 11.5 期間を使った算術演算
      1. 11.5.1 期間頻度の変換
      2. 11.5.2 四半期の頻度
      3. 11.5.3 タイムスタンプから期間への変換(とその逆)
      4. 11.5.4 配列からPeriodIndexを作成する
    6. 11.6 再サンプリングと頻度変換
      1. 11.6.1 ダウンサンプリング
      2. 11.6.2 アップサンプリングと穴埋め
      3. 11.6.3 期間で再サンプリングする
    7. 11.7 移動する窓関数
      1. 11.7.1 指数加重関数
      2. 11.7.2 2つ値がある場合の移動する窓関数
      3. 11.7.3 ユーザ定義の移動する窓関数
    8. 11.8 まとめ
  19. 12章 pandas:応用編
    1. 12.1 カテゴリ型データ
      1. 12.1.1 開発の背景と動機
      2. 12.1.2 pandasにおけるカテゴリ型
      3. 12.1.3 カテゴリを用いた計算
      4. 12.1.4 カテゴリメソッド
    2. 12.2 グループ演算の使い方:応用編
      1. 12.2.1 グループの変換とGroupByの「分解」
      2. 12.2.2 時系列データの再サンプリングを伴うグループ化
    3. 12.3 メソッドチェーンを行うためのテクニック
      1. 12.3.1 pipeメソッド
    4. 12.4 まとめ
  20. 13章 Pythonにおける モデリングライブラリ入門
    1. 13.1 pandasとモデルとのやり取りを行う
    2. 13.2 Patsyを使ったモデルの記述
      1. 13.2.1 Patsy式におけるデータ変換
      2. 13.2.2 カテゴリ型データとPatsy
    3. 13.3 statsmodels入門
      1. 13.3.1 線形モデルの推定
      2. 13.3.2 時系列モデルの推定
    4. 13.4 scikit-learn入門
    5. 13.5 この後の学びのために
  21. 14章 データ分析の実例
    1. 14.1 短縮URL Bitlyにおける1.usa.govへの変換データ
      1. 14.1.1 Python標準機能でのタイムゾーン情報の集計
      2. 14.1.2 pandasを使用したタイムゾーン情報の集計 (1/2)
      3. 14.1.2 pandasを使用したタイムゾーン情報の集計 (2/2)
    2. 14.2 MovieLens 1M(映画評価データ)
      1. 14.2.1 評価の分かれた映画の抽出
    3. 14.3 アメリカの赤ちゃんに名付けられた 名前リスト(1880-2010) (1/2)
    4. 14.3 アメリカの赤ちゃんに名付けられた 名前リスト(1880-2010) (2/2)
      1. 14.3.1 名付けの傾向分析 (1/2)
      2. 14.3.1 名付けの傾向分析 (2/2)
    5. 14.4 アメリカ合衆国農務省の食糧データベース (1/2)
    6. 14.4 アメリカ合衆国農務省の食糧データベース (2/2)
    7. 14.5 2012年度連邦選挙委員会データベース
      1. 14.5.1 職業別・雇用者別の寄付の分析
      2. 14.5.2 寄付金額ごとの分析
      3. 14.5.3 州ごとの寄付の分析
    8. 14.6 まとめ
  22. 付録A NumPy:応用編
    1. A.1 ndarrayオブジェクトの内部構造
      1. A.1.1 NumPy dtypeの階層構造
    2. A.2 配列操作:応用編
      1. A.2.1 配列の形状の再成形
      2. A.2.2 C型の順序とFortran型の順序
      3. A.2.3 配列の結合と分割
      4. A.2.4 要素の繰り返し:tileとrepeat
      5. A.2.5 ファンシーインデックス参照の別法:takeとput
    3. A.3 ブロードキャスト
      1. A.3.1 他の軸へのブロードキャスト
      2. A.3.2 ブロードキャストによる配列への値の設定
    4. A.4 ufuncの使い方:応用編
      1. A.4.1 ufuncのインスタンスメソッド
      2. A.4.2 Pythonで新しいufuncを書く方法
    5. A.5 構造化配列とレコード配列
      1. A.5.1 ネストした構造を持つdtypeと多次元フィールド
      2. A.5.2 構造化配列を使うべき理由
    6. A.6 ソートについてさらに詳しく
      1. A.6.1 間接ソート:argsortとlexsort
      2. A.6.2 使用可能な他のソートアルゴリズム
      3. A.6.3 配列の一部分をソートする
      4. A.6.4 numpy.searchsorted:ソート済みの配列内で要素を探す
    7. A.7 Numbaを用いて高速なNumPy関数を書く
      1. A.7.1 独自定義のnumpy.ufuncオブジェクトをNumbaを用いて 作成する
    8. A.8 配列の入出力:応用編
      1. A.8.1 メモリマップファイル
      2. A.8.2 HDF5やその他の配列保存方法
    9. A.9 パフォーマンス改善のための豆知識
      1. A.9.1 連続したメモリの重要性
  23. 付録B IPythonシステム上級編
    1. B.1 コマンド履歴
      1. B.1.1 コマンド履歴の検索とその再利用
      2. B.1.2 入出力変数
    2. B.2 オペレーティングシステムとの連携
      1. B.2.1 シェルコマンドとエイリアス(別名定義)
      2. B.2.2 ディレクトリブックマークシステム
    3. B.3 ソフトウェア開発ツール
      1. B.3.1 対話的デバッガ
      2. B.3.2 処理時間の計測:%timeと%timeit
      3. B.3.3 プロファイリングの基礎:%prunと%run -p
      4. B.3.4 行ごとのプロファイリング
    4. B.4 IPythonでの生産的コード開発に向けたヒント
      1. B.4.1 依存関係を考慮したモジュールの再読み込み
      2. B.4.2 コード設計のヒント
    5. B.5 高度なIPython機能
      1. B.5.1 自前のクラスのIPythonへの親和性を高める技法
      2. B.5.2 IPythonプロファイルと構成機能
    6. B.6 まとめ
  24. 索引 (1/5)
  25. 索引 (2/5)
  26. 索引 (3/5)
  27. 索引 (4/5)
  28. 索引 (5/5)

Product information

  • Title: Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
  • Author(s): Wes McKinney, 瀬戸山 雅人, 小林 儀匡, 滝口 開資
  • Release date: July 2018
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118451

You might also like

book

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

by Stephen Wendel, 武山 政直, 相島 雅樹, 反中 望, 松村 草也

深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。

book

入門 監視 ―モダンなモニタリングのためのデザインパターン

by Mike Julian, 松浦 隼人

本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です。

book

詳説 イーサネット 第2版

by Charles E. Spurgeon, Joann Zimmerman, 三浦 史光, 豊沢 聡

イーサネット技術についての解説書。本書では、ファーストイーサネットやギガビットイーサネットなどの従来技術だけでなく、10ギガ、40ギガ、100ギガビットなど最新のイーサネット仕様を詳しく解説します。また、全二重イーサネット、オートネゴシエーション、Power over Ethernet、Energy Efficient Ethernet、構造化ケーブリングシステム、スイッチを用いたネットワークの設計、ネットワーク管理、ネットワークのトラブルシューティングのテクニックなども解説します。ネットワークの設計、監視、保守、障害時対応までを網羅し、信頼性の高いネットワークの構築を支援します。

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。