『Python エンジニアファーストブック』- Python活用 の "さわり" がコンパクトに詰まった一冊

2017年9月9日に技術評論社より『Python エンジニアファーストブック』が刊行されました。

Pythonエンジニア ファーストブック

Pythonエンジニア ファーストブック

  • 作者: 鈴木たかのり,清原弘貴,嶋田健志,池内孝啓,関根裕紀
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/09/09
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

本書は以下の構成からなります。

  • 第1章 Pythonの動向 - その特徴、歴史とコミュニティの紹介
  • 第2章 最低限知っておきたいPython言語の基本 - Pythonで開発を始める前に知っておくべきこと
  • 第3章 開発環境とチーム開発 - チーム開発で使われている開発環境とツール
  • 第4章 スクレイピング - PythonによるWebスクレイピング
  • 第5章 PyData入門ガイド - Pythonによるデータ分析のはじめの一歩
  • 第6章 Webアプリケーション開発 - Webフレームワークを使ってWebアプリケーション開発に挑戦

さまざまな場面で利用される Python の魅力のエッセンスともいうべき情報がコンパクトにまとめられた内容になっています。

その中で今回「第5章 PyData 入門ガイド」の執筆を担当いたしました。Python 本の執筆としては 2014年に『Pythonエンジニア養成読本(以下、養成読本)』の執筆チームに参加させていただいたのが初めてでして、今回はその大幅改訂版ということで個人的には感慨深くもあるプロジェクトでした。

いっぽう、これだけデータ分析業界のタレントやプレーヤーが増えてきた中で、改めて僕が本章の筆を執ることに若干の躊躇いもあったのですが、「Data Engineering のはじめの一歩」を伝える内容になれば意義もあろうというモチベーションで取り組みました。

なお、本エントリでいう「Data Engineering(データエンジニアリング)」とは、いわゆる Data Science(データサイエンス) とは異なるもので、この定義も実際容易ではないわけですが、データ収集や前処理などの工程や、ある程度フロー化された統計解析への取り組み、分析プロセスの高度な自動化(より具体的にいうとバッチ処理化やプロトタイピングのプロダクションコード化)などの領域を指しています*1

第5章は Data Engineering 領域の一部の入門的内容を取り扱っているという(自分の中での)位置づけです。

第5章 PyData 入門ガイド の読みどころ

それでは、担当章の読みどころを簡単に紹介してみようと思います。

構成

第5章の構成(= 節見出し)としては次のとおりです。

  1. PyData とは
  2. はじめての Jupyter Notebook
  3. 実践 レゴデータ分析[データ探索編]
  4. 実践 レゴデータ分析[データ可視化、分析編]
  5. Anaconda環境の利用
  6. PyData パッケージガイド

養成読本では、PyData パッケージのいくつかについてダイジェストで紹介した上で、最後にオープンデータを可視化してみるという構成でした。こんにち、パッケージの使い方的な情報はすでにありふれており、養成読本のデータの可視化はおまけ程度の内容でしたので、抜本的に改訂が必要であろうということで大方の内容を書きかえました。

メインコンテンツ紹介

「第4章 スクレイピング」で収集したレゴのデータを利用して、データの読み込み、集計、簡単な統計解析、可視化に取り組むというのがメインコンテンツです。ツール的には Jupyter、pandas、SciPy、Matplotlib が登場します。統計解析的な要素としては単回帰分析を用いています。

f:id:iktakahiro:20170922230632p:plain:w400
pandas を使ったデータ探索の解説(本書200頁)

f:id:iktakahiro:20170922230803p:plain:w400
pandas (Matplotlib) を使ったデータ可視化の解説(本書207頁)

本書全体をとおして読むと、

  1. Python の使い方がわかり
  2. スクレイピングで Web からデータが収集でき
  3. PyData パッケージを使ったデータエンジニアリングの初歩が学べる

という流れになっています。

こぼれ話

データ可視化は主に pandas の plot() メソッドを利用して行っています。

theme_ranking10 = count_theme.sort_values(ascending=False).head(10)
theme_ranking10.plot.bar(figsize=(10, 5))

さまざまな方法を検討しましたが、簡単にグラフ出力したいならたぶんこれが一番楽だと思います。Matplotlib を直接触っているところもあります。

すごく余談ですが、最近僕の中で、Python データ可視化パッケージのキャラ付けは以下のようになっています。

  • 論文書くなら Matplotlib 先生
  • 実務に手堅い Seaborn 中尉
  • お一人様なら pandas くん
  • よそゆき Bokeh さん

この話はまた別のどこかでしたいと思います(しません)。

あと執筆期間中に発覚した衝撃(?)の事実として matplotlib は固有名詞としては先頭大文字始まりの Matplotlib だったというものがありました。ロゴが小文字なので小文字と思い込んでいたのですが*2、公式ドキュメントではしっかり大文字表記でした。

回帰分析には SciPy を使っています。scikit-learn のほうが良かったという説がありますが、機械学習以前の領域を取り扱いたいということもありましたのでご容赦ください。

Anaconda と すばらしき PyData パッケージたち

Python の環境としては公式インストーラーの Python を利用する前提の解説ですが、補足情報として Anaconda の conda コマンドを紹介しています。

また Appendix 扱いで、PyData パッケージガイドとして NumPy や scikit-learn、TensorFlow などの超メジャーなものから、比較的あたらしめの PyTorch などを一覧で紹介しています。本書中でも触れているのですが、PyData 関連パッケージも日進月歩ですので、Awesome Python で探すといいよ、というのが本音ですね。

まとめ

次の書評ブログがとても端的に本書の特色を示していると思います(まとめを人様のブログに委ねるスタイル)。

massa142.hatenablog.com

本書は Python を活用してくための情報がコンパクトに詰まった一冊です。@checkpoint 渾身の Django 解説も見所です。

サイズ的にも気軽に手に取れる仕上がりですので、ぜひご覧いただければと思います。

あわせて読みたい

拙著で恐縮ですが、Jupyter や データ可視化についてもっと詳しく知りたい方向け。

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

4章でスクレイピングに興味をもった方へ激しくお勧めな一冊。Scrapy の詳解あります。

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

じつは Python 文法よくわかってなかったわ… という方はこちらをどうぞ。

みんなのPython 第4版

みんなのPython 第4版

*1:Data Engineer ≠ Data Scientist

*2:https://matplotlib.org/_static/logo2.svg