- 更新日: 2020年09月28日
- 公開日: 2020年01月23日
【初心者〜上級者まで】python学習におすすめの本・レベル別3選+α
Python の参考書、今書店で確認しても Amazon で確認しても、ムチャクチャ多くて迷いますよね。
私は 2年前から Python の学習を不定期にしていて、手元にある本を数えると 19冊。職業柄かもしれませんが、参考書の数は多い方と思います。
実際に読んで、これから Python をはじめる方、始めている方にオススメの本を 9冊 ご紹介させて頂きます。
購入、学習の際の参考にして頂ければ幸いです。
<< 今回ご紹介させていただく本 >>
- いちばんやさしい Python入門教室
- 独学プログラマー Python言語の基本から仕事のやり方まで
- みんなのPython 第4版
- Pythonスタートブック [増補改訂版]
- Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!
- ゲームを作りながら楽しく学べるPythonプログラミング
- Python実践データ分析100本ノック
- Pythonではじめる機械学習――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- エキスパートPythonプログラミング 改訂2版
- [2019年最新版]python学習におすすめの本をレベル別に3冊厳選+α
- 初心者向け!1冊目におすすめの本
- いちばんやさしい Python入門教室
- 独学プログラマー Python言語の基本から仕事のやり方まで
- みんなのPython 第4版
- 中級者向け!2冊目におすすめの本
- Pythonスタートブック [増補改訂版]
- Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!
- ゲームを作りながら楽しく学べるPythonプログラミング
- 上級者へスキルアップ!3冊目におすすめの本
- Python実践データ分析100本ノック
- Pythonではじめる機械学習――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- エキスパートPythonプログラミング 改訂2版
- 番外編!AI系Python参考書
- Pythonで儲かるAIをつくる
- 今すぐ試したい! 機械学習・深層学習(ディープラーニング) 画像認識プログラミングレシピ
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- Python本で独学を成功させる方法
- まとめ
[2019年最新版]python学習におすすめの本をレベル別に3冊厳選+α
初心者向け!1冊目におすすめの本
いちばんやさしい Python入門教室
Chapter1 | Chapter2 | Chapter3 | Chapter4 | Chapter5 | Chapter6 | Chapter7 | Chapter8 |
---|---|---|---|---|---|---|---|
プログラムってなんだろう | Pythonを始めよう | Pythonでプログラムを書くときのルール | プログラムを構成する基本的な機能 | 数当てゲームを作ってみよう | 数当てゲームをグラフィカルにしよう | クラスとオブジェクト | 拡張モジュールを使ってみよう |
プログラムとは命令を集めたもの | Pythonを使うには | 1つのファイルに命令をまとめよう | プログラムを構成する6大要素 | 数当てゲームを作ろう | ゲームの見た目をどう設計するか | 円が動くプログラムを作ります | PDFで横断幕を作ろう |
プログラムはどうやって作るの? | バージョンが違う2つのPython | たくさんの命令を並べてみよう | 変数を使ってみよう | まずは1桁の数字で試してみよう | Pythonでウィンドウを表示してみよう | ウィンドウの中に円を描こう | Pythonに機能を追加するモジュール |
プログラムを作るには、何が必用なの? | Pythonをインストールする | 保存したファイルを開くには | 繰り返し実行してみよう①for構文 | 4桁のランダムな値を作る | メッセージと入力欄を配置しよう | クリックした場所に円を動かしてみよう | PythonでPDFファイルを作ってみよう |
何を勉強すればいいの? | 簡単な命令を実行してみよう | 文字を表示してみよう | 繰り返し実行してみよう②While構文 | 4桁の数字を正しく入力してもらおう | ボタンが押された時にメッセージを表示しよう | 円を右に動かしてみよう | 横断幕を作ろう |
インタラクティブモードで遊んでみよう | 文字列を連結してみよう | 条件分岐する/if構文 | ヒットとブローを判定しよう | ヒット&ブローの当たり判定を組み込もう | 往復して動かせるようにしよう | ||
日本語をきちんと表示するためのルール | 関数を使う | 履歴を表示しよう | 斜めに動かそう | ||||
長い文字列を表示してみよう | 機能を拡張するモジュール | たくさんの円を動かそう | |||||
空白、インデント、改行の役割 | プログラムをブロック化して1つの機能を与える | ||||||
プログラムを補足するコメントの書き方 | 円だけでなく、四角、三角を混ぜてみよう |
価格: 2,280円(税別)
大きさ: B5変形(w18.2 × h23.2 cm)
重さ: 611g
厚み: 1.9cm
色: カラー
発行: 2017.4.30
使用されている Python Version: Python3.6
本の公式ページ: ソーテック社
感想
前半は基礎、後半は応用ですが、全体的にカラー・レイアウトで見やすく、読んでいて "ストレス" を感じにくい本。 ページ内のコードもテキストエディタのように、 print や for の部分は色が付き、コードも読みやすいと思います。
ゲームのサンプルでは "tkinter" という Pythonグラフィカル・ツールを使ったり、 最終章の PDF 作成プログラムでは "ReportLab" というツールを使用。 "tkinter" や "ReportLab" の使い方を知りたい方にはオススメですね。
この本のサンプルを見て、 「Web 上で文字を入力したら、 書いた文字の A4 PDF がダウンロード」 されるような Webサービスがあったら、お店のポップ作りが捗るかな、と思いました。また tkinter の入力履歴を表示する要領、プログラマブルで ゲーム・プログラムには標準装備すべき? と思いましたね。
独学プログラマー Python言語の基本から仕事のやり方まで
第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 第7章 | 第8章 | 第9章 | 第10章 | 第11章 | 第12章 | 第13章 | 第14章 | 第15章 | 第16章 | 第17章 | 第18章 | 第19章 | 第20章 | 第21章 | 第22章 | 第23章 | 第24章 | 第25章 | 第26章 | 第27章 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
イントロダクション | さあ、はじめよう! | プログラミング入門 | 関数 | コンテナ | 文字列操作 | ループ | モジュール | ファイル | 知識を1つにまとめる | ハマったときの助け | プログラミングパラダイム | オブジェクト指向プログラミングの4大要素 | もっとオブジェクト指向プログラミング | 知識を1つにまとめる | Bash | 正規表現 | パッケージ管理 | バージョン管理 | 知識を1つにまとめる | データ構造 | アルゴリズム | プログラミングのベストプラクティス | プログラマーとしての最初の仕事 | チームで働く | さらに学ぼう | 次のステップ |
本書の構成 | プログラミングってなに? | コード例 | コンセプトを表してみる | メソッド | 三重クォート文字列 | forループ | 重要な組み込みモジュール | ファイルに書き出す | ハングマン | 読んでみよう | 状態 | カプセル化 | クラス変数 vs インスタンス変数 | Card | Bashを使うために | 準備 | パッケージ | リポジトリ | HTML | スタック | FizzBuzz | コードを書くのは最後の手段 | 道を選ぶ | 基本をマスターする | 古典で学ぶ | メンターを見つけよう |
大事なところから学ぶ | Pythonってなに? | コメント | 関数 | リスト | インデックス | range | ほかのモジュールをインポートする | ファイルを自動的に閉じる | チャレンジ | その他の読み物 | 手続き型プログラミング | 抽象化 | 特殊メソッド | Deck | Bashを見つけよう | シンプルな一致 | pip | はじめよう | Googleニュースをスクレイピングする | スタックを使って文字列を逆順にする | 線形探索 | DRY | 経験しよう | Google検索できることを質問しない | オンライン授業で学ぶ | 本質を探る努力をしよう |
あなただけじゃない | Pythonのインストール | 出力 | 関数を定義する | タプル | 文字列はイミュータブル | whileループ | 用語集/チャレンジ | ファイルから読み込む | 助けてもらうには | 関数型プログラミング | ポリモーフィズム | is | Player | コマンド | 前方一致と後方一致 | 仮想環境 | プッシュとプル | 用語集/チャレンジ | キュー | 回文 | 直交性 | 面接を受ける | コードを変更する | ハッカーニュース | アドバイスを得よう | |
独学の強み | 困ったときは | 行 | 組み込み関数 | 辞書 | 文字列の足し算 | break | CSVファイル | オブジェクト指向プログラミング | 継承 | 用語集/チャレンジ | Game | 最近使ったコマンド | 複数文字との一致 | 用語集/チャレンジ | プッシュしてみよう | チケット行列 | アナグラム | どのデータも1カ所で定義しよう | 面接 | 詐欺師症候群 | ||||||
プログラムを書くと良いこと | 対話シェル | キーワード | 関数を再利用する | コンテナの中のコンテナ | 文字列のかけ算 | continue | 用語集/チャレンジ | 用語集/チャレンジ | コンポジション | 戦争のコード全体 | 相対パス vs 絶対パス | 数値との一致 | プルしてみよう | 用語集/チャレンジ | 出現する文字列を数える | 1つの関数には1つのことだけをさせよう | 面接をハックする | |||||||||
断固として継続しよう | プログラムを保存する | スペース | 必須引数とオプション引数 | 用語集/チャレンジ | 大文字小文字変換 | 入れ子のループ | 用語集/チャレンジ | 作業ディレクトリの変更 | 繰り返し | 前のバージョンに戻す | 再帰 | 時間がかかりすぎるなら、たぶん何か間違えている | ||||||||||||||
この本の表示について | 例題プログラムを実行する | データ型 | スコープ | 書式化 | 用語集/チャレンジ | フラグ | エスケープ | 差分 | 用語集/チャレンジ | 最初に良い方法で実装しよう | ||||||||||||||||
この本で扱っている技術 | 用語集/チャレンジ | 定数と変数 | 例外処理 | 分割 | 隠しファイル | 正規表現ツール | 次のステップ | 慣例に従おう | ||||||||||||||||||
用語集/チャレンジ | 構文 | ドキュメンテーション文字列 | 結合 | パイプ | 用語集/チャレンジ | 用語集/チャレンジ | 強力なIDEを使おう | |||||||||||||||||||
エラーと例外 | 必要なときにだけ変数を使おう | 空白除去 | 環境変数 | ロギング | ||||||||||||||||||||||
算術演算子 | 用語集/チャレンジ | 置換 | ユーザー | テスト | ||||||||||||||||||||||
比較演算子 | 文字を探す | さらに学ぶ | コードレビュー | |||||||||||||||||||||||
論理演算子 | 包含 | 用語集/チャレンジ | セキュリティ | |||||||||||||||||||||||
条件文 | エスケープ文字 | 用語集 | ||||||||||||||||||||||||
文 | 改行 | |||||||||||||||||||||||||
用語集/チャレンジ | スライス | |||||||||||||||||||||||||
用語集/チャレンジ |
価格: 2,420円(税込)
大きさ: A5(w14.9 × h21 cm)
重さ: 372g
厚み: 1.8cm
色: モノクロ
発行: 2018.02.26
使用されている Python Version: Python3.6
本の公式ページ: 日経BP社
感想
世界で 10万部以上売れ、 8つの言語に翻訳されている本著。日経新聞の広告欄にも掲載されたりして、気になっている方も多いのではないでしょうか? 本著は 「将来 Python エンジニアになりたい!」 「 IT や AI企業で働きたい」 という方を対象にした参考書です。 コンピューティングや Python のインストール方法、基本文法にスクレイピングと、今まで "コード" や "コマンド" に触れたことがない人を対象にしています。 感覚的には "Python に慣れる、プログラムに慣れる" といった感じ。
プログラムでハマった時の対処方法や就職時の面接のコツなども書かれていますが、正直 "内容は薄い" と思いました。文量的な問題もあるのでしょうが、 "目次" のキーワードに期待しすぎるのは ❌ かもしれません。広く浅く、というのが本著のイメージでしょう。
また 178〜187ページでゲームのプログラムが紹介、恐らく Python 初学者にとってこのプログラムを実行できるのは半分ぐらいではないでしょうか? 日本語も途中? でしたので、コリーさんのレポジトリ(GitHub) よりコードを引用し、日本語バージョンにさせて頂きました。
独学プログラマで紹介されているゲーム・プログラムを実行する様子の動画
みんなのPython 第4版
Chapter 01 | Chapter 02 | Chapter 03 | Chapter 04 | Chapter 05 | Chapter 06 | Chapter 07 | Chapter 8 | Chapter 9 | Chapter 10 | Chapter 11 | Chapter 12 | Chapter 13 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
プログラミング言語Python | Pythonでプログラミングをはじめよう | Pythonの基礎をマスターする | 組み込み型を使いこなす | 関数型プログラミング | クラスとオブジェクト指向開発 | クラスの継承と高度なオブジェクト指向機能 | モジュール | スコープとオブジェクト | 例外処理 | 標準ライブラリを使う | Pythonとデータサイエンス | Python2 |
Pythonの魅力 | 数値を使う | ディクショナリ(辞書)を使う | オブジェクトとしての組み込み型 | 関数型プログラミングとは何か | Pythonでクラスを使う | クラスを継承する | モジュールファイルを作る | 名前空間,スコープ | Pythonの例外処理 | 標準ライブラリのインポート | NumPyとmatplotlib | Python3とPython2の違い |
Python(Anaconda)の入手とインストール | 変数を使う | set(集合)を使う | 数値型を操作する | 内包表記(コンプリヘンション) | クラスを作る | 特殊メソッドを利用する | モジュールの階層構造(パッケージ) | 純粋オブジェクト指向言語としてのPython | 良く起こるエラーや例外と対策 | データ構造 | NumPyを使う | Python2から3への移行方法 |
インタラクティブシェル(対話型シェル)を使う | 文字列を使う | タプルを使う | 文字列型を使いこなす | イテレータを使う | 組み込み型を継承する | モジュールを利用する際の注意点 | 日時データの扱い「datetime,calendar」 | matplotlibを使う | おわりに | |||
ファイルにPythonのプログラムを書く | リストを使う | if文の応用 | リスト型,タプル型を使いこなす | ジェネレータを使う | サードパーティーのモジュールを使う | 正規表現「re」 | 日本の人口を可視化する | |||||
Jupyter Notebookを使う | for文でループを使う | ループの応用 | set型を使いこなす | 高階関数とデコレータ | システムパラメータを取得,操作する「sys」 | Pythonと機械学習 | ||||||
if文で条件分岐をする | 関数の応用 | ディクショナリ型を使いこなす | ファイル,プロセスなどOS依存の情報を取得,操作する「os」 | |||||||||
関数を使う | if文と組み込み型 | 数学関数を利用する「math」「random」 | ||||||||||
モジュールを使う | for文と組み込み型 | インターネット上のデータを取得する「urllib」 | ||||||||||
関数と組み込み型 | 文字列ベースのバーチャルなファイルを作る「io.StringIO」 | |||||||||||
Pythonの文字列と日本語 | CSV(カンマ区切り)ファイルの操作「csv」 | |||||||||||
Pythonのファイル処理 | オブジェクトの永続化とシリアライズ「shelve」「pickle」 | |||||||||||
JSONデータを扱う「json」 |
価格: 2,700円(税別)
大きさ: A5(w14.8 × h21 cm)
重さ: 669g
厚み: 3cm
色: 2色
発行: 2016.12.12
使用されている Python Version: Python3.5
本の公式ページ: SBクリエイティブ社
感想
書かれていることの難易度としては、 "いちばんやさしい Python入門教室" 以上、 オライリーの "入門Python3" 未満と思います。内容については基本文法がメインで、進捗プロセスも技術書らしい展開。 Amazon のレビューなどを見ていると「地味」「Anacondaのインストールが大変」 と 2018年ぐらいからネガティブなコメントを見受けますが、私は基礎学習は地味でいいと思います。 Anacondaについては、ダウンロードサイズが 400MBオーバーでインストールも一苦労するでしょう。書籍内では Anaconda ですが、今は テキストエディタの Visual Studio Code + 拡張機能 で Jupyter Notebook のサンプルを実行することも可能。
文末では日本の将来の人工を予測する、という統計プログラムを実行。 ラーニングはしていないので AI ではないですが、データ分析や統計などに興味ある方は一読&プログラム実行の価値はあると思いますよ。
中級者向け!2冊目におすすめの本
Pythonスタートブック [増補改訂版]
第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 第7章 | 第8章 | 第9章 | 第10章 | 第11章 | 付録 |
---|---|---|---|---|---|---|---|---|---|---|---|
プログラムを作ろう! | プログラムの材料と道具 | データと型のすべて | データの入れ物 | 条件分岐と繰り返し | ファイルの読み書き | Pythonで画を描く | 関数を作る | 新しいデータ型を作る | Webアプリケーションを作る | データを解析する | WindowsにPythonをインストールする |
1-1 この章で学ぶこと | 2-1 この章で学ぶこと | 3-1 この章で学ぶこと | 4-1 この章で学ぶこと | 5-1 この章で学ぶこと | 6-1 この章で学ぶこと | 7-1 この章で学ぶこと | 8-1 この章で学ぶこと | 9-1 この章で学ぶこと | 10-1 この章で学ぶこと | 11-1 この章で学ぶこと | macOSにPythonをインストールする |
1-2 プログラミング言語Python | 2-2 材料の種類とデータ型 | 3-2 材料と道具をまとめて考える | 4-2 リスト型 | 5-2 for文 | 6-2 簡単なファイルの読み書き | 7-2 turtleモジュールの基本 | 8-2 関数の書き方を知ろう | 9-2 データ型の復習 | 10-2 Webの仕組み | 11-2 データベースを利用する | 文字コードと日本語 |
1-3 Pythonのインストール | 2-3 道具としての関数 | 3-3 モノの上下関係を考える | 4-3 辞書型 | 5-3 if文 | 6-3 複数行を書き込み・読み込みする | 7-3 turtleモジュールを使いこなしてみよう | 8-3 関数の便利さを実感してみる | 9-3 新しいデータ型を作る | 10-3 CGIで作る動的なWeb | 11-3 ヒストグラムを描く | 関数と変数の高度な話 |
1-4 コンピュータに指示を出す | 2-4 メソッド | 3-4 データの型とその中身 | 4-4 その他の入れ物 | 5-4 while文 | 6-4 for文を使ったファイルの処理 | 8-4 さらに関数を知る | 9-4 もっとクラスを知る | 10-4 サーバにデータを送る | リスト,辞書,セットの実践テクニック | ||
1-5 インタラクティブシェルではじめるPython | 3-5 datetimeモジュール | 4-5 単語並べ替えプログラム | 5-5 エラー | 9-5 継承 | コンピュータの歴史とPython | ||||||
1-6 はじめてのプログラムを書く | 3-6 データ型とオブジェクト | 5-6 体型判定プログラム | さらに学んでいくために | ||||||||
3-7 人生を計算してみる | 外部ライブラリの追加方法 |
価格: 2,500円(税別)
大きさ: B5変形版(w18.2 × h23 cm)
重さ: 637g
厚み: 2.5cm
色: モノクロ
発行: 2018.04.25
使用されている Python Version: Python3.5
本の公式ページ: 技術評論社
感想
9章で "クラス" について紹介されていて、こちらの本ではクラス・ファイルを 1つ、 そのクラスを使うファイルを 1つ、という風に分けて利用。より実践的で ◎ と思いましたね。
文末の Web では Bottle などのフレームワークなしの CGI で、 Python からネット接続。そしてデータベースも Django などを使用するのではなく、 "SQLiteモジュール" を使ってデータベースを操作。感覚的には、 "CPUの動く原理" や "車が走る原理" を知るような感じで、 Web や データベース操作の "原理" を知ることができるでしょう。
またサンプルコードでは、インデント(空白)が "いくつ" 必用か明確に書かれていますので、インデントに慣れていない Python 初学者でも安心してコードを実行できると思いましたね。
Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!
こちらは Python 1年生を終え、 2年目に進級できた方を対象にした参考書。相変わらずヤギ博士とふたばちゃんのやり取りが可愛く、難しいイメージのプログラムを優しい物に変えてくれます。
内容としては実用的な Beautifulsoup を使って、記事一覧を取得したり、画像データを一括ダウンロード。それから CSVデータに対して Pandas を使ってデータ解析したり、 Matplotlib を使ってグラフ化したり。
そして文末では、 公開されている公共データを使って、消火栓の位置を地図に自動プロット(地図表示には folium ライブラリを使用)。それから天気予報の API を使うというサンプルも。 本著では Python のインストール方法こそ紹介されているものの、基本文法の紹介は ナシ の内容です。
第1章 | 第2章 | 第3章 | 第4章 | 第5章 |
---|---|---|---|---|
Pythonでデータをダウンロード | HTMLを解析しよう | 表データを読み書きしよう | オープンデータを分析してみよう | Web APIでデータを収集しよう |
スクレイピングってなに? | HTMLを解析してみよう | pandasを使ってみよう | オープンデータってなに? | Web APIってなに? |
Pythonをインストールしてみよう | ニュースの最新記事一覧を取得してみよう | さまざまなデータの加工 | 郵便局:郵便番号データ | OpenWeatherMapってなに? |
requestsでアクセスしてみよう | リンク一覧をファイルに書き出そう | グラフで表示してみよう | e-Stat:政府統計の相互窓口 | 現在の天気を調べよう |
画像を一括ダウンロードしよう | Excelファイルを読み書きしてみよう | キッズすたっと:探そう統計データ | 現在から5日間(3時間ごと)の天気を調べよう | |
自治体のデータ:データシティ鯖江 |
価格: 2,200円(税別)
大きさ: B5変形版(w18.2 × h23 cm)
重さ: 493g
厚み: 1.6cm
色: カラー
発行: 2019.10.04
使用されている Python Version: Python3.7
本の公式ページ: 翔泳社
感想
サンプルコードを実行すればグラフが表示されたり、データが取得できたりするので、少し Python をはじめた段階の方でも楽しめる内容と思いました。公開データの取得からデータ加工、そしてグラフ表示と実用的な要素も ◎ ですね。
ただし、 Matplotlib や Pandas を pip install
とあるのですが、仮想環境は無視...な様子。 Windows や Mac を対象に Python3.7 で紹介しているので仮想環境は飛ばしているのかもしれませんが、今後も同じように pip install
していくと、 ライブラリが管理しにくくなるかもしれません。個人的には、 python3.7 -m venv env
で仮想環境を作成してから、 pip install
する方がいいと思いました。
ゲームを作りながら楽しく学べるPythonプログラミング
第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 第7章 | 第8章 | 第9章 | 第10章 | 第11章 | 第12章 | 第13章 | 第14章 | 第15章 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pythonの紹介 | データ型とデータ構造 | 制御文 | PyGame | その他押さえておきたい事項 | オブジェクト指向 | Cave | マインスイーパー | Saturn Voyager | Snake | ブロック | アステロイド | Missile Command | シューティング | 落ちもの系ゲーム |
豊富なライブラリ | 演算 | インデント | ウィンドウの表示 | 三角関数の基礎 | プロパティとメソッド | 概要 | 概要 | 座標系 | 概要 | 概要 | 概要 | 概要 | 概要 | 概要 |
環境設定 | 変数 | 条件式の評価 | タイマー | デバッグ | クラスとオブジェクト | グローバル変数 | グローバル変数 | グローバル変数・グローバルコード | グローバル変数 | グローバル変数 | クラス | クラス | クラス | クラス |
代入の簡易記法 | ブール値以外の値 | PyGameのドキュメント | スコープ | 継承のイメージ | 関数 | 関数 | 関数 | 関数 | クラスと関数 | 関数 | グローバル関数 | 関数 | 関数 | |
関数 | 関数 | 各種描画 | メソッドとインタフェース | クラス | 関数 | グローバル変数 | ||||||||
データ型とデータ構造 | モジュール | クラス設計 | ||||||||||||
キャスト | クラス定義 | |||||||||||||
リスト、タプル、辞書 | メソッド | |||||||||||||
リストやタプルを扱うのに便利な関数 | 継承 | |||||||||||||
コメント | ||||||||||||||
行の取り消し |
価格: 2,500円(税別)
大きさ: w18 × h25.8 cm
重さ: 587g
厚み: 2cm
色: モノクロ
発行: 2017.03.24
使用されている Python Version: Python3.5(Anaconda)
本の公式ページ: NextPublishing
感想
前半が Python基本文法のおさらいや PyGame の基本機能、後半がゲームの紹介で 9つのゲームが紹介されています。とりあえずサンプル・コードを実行すれば PyGame を楽しめますので、 Python 初学者には ◎ 、と思いました。
ゲーム・プログラムの紹介では、コードがあって、概要説明といった流れ。蛍光ペンをもって、コード内の変数や関数をマーカー、そして解説の変数や関数をマーカーしないと恐らく分かりにくい、と思いましたね。角度や速度、長さの取り扱いは、さすがゲーム本とあって詳しく、他の本では勉強できない内容でしょう。
感覚的には 「プログラミングのきっかけ」 「Python のきっかけ」 に利用できる本と思いました。ちなみにこちらの本でも "仮想環境" については触れていなく、文末の索引もなしです。
上級者へスキルアップ!3冊目におすすめの本
Python実践データ分析100本ノック
IT企業:アイキュベートのメンバーらによって書かれた実用的な Python の参考書。 「Python、結局現実社会のどんなところで役に立つのかイメージできないな」 といった Python ビギナーをはじめ、ビジネスユースにもオススメの一冊。 「クラブ会員の継続予測」 や 「物流の最適化」 「アンケートの分析」 などをエクセルではなく、 Python で最適化。
決定木など機械学習的な要素も一部登場しますが、頭で理解というよりは、コードを動かして理解しよう、といった感じ。なので Python のインストールや基本文法の紹介はなく、最初のコードから Pandas を import して、 CSVファイルを読み込んでいきます。尚こちらのサンプルコードは、 Jupyter Notebook形式です。
第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 第7章 | 第8章 | 第9章 | 第10章 | 他 |
---|---|---|---|---|---|---|---|---|---|---|
ウェブからの注文数を分析する10本ノック | 小売店のデータでデータ加工を行う10本ノック | 顧客の全体像を把握する10本ノック | 顧客の行動を予測する10本ノック | 顧客の退会を予測する10本ノック | 物流の最適ルートをコンサルティングする10本ノック | ロジスティクスネットワークの最適設計を行う10本ノック | 数値シミュレーションで消費者行動を予測する10本ノック | 潜在顧客を把握するための画像認識10本ノック | アンケート分析を行うための自然言語処理10本ノック | 付録 |
データを読み込んでみよう | データを読み込んでみよう | データを読み込んで把握しよう | データを読み込んで確認しよう | データを読み込んで利用データを整形しよう | 物流に関するデータを読み込んでみよう | 輸送最適化問題を解いてみよう | 人間関係のネットワークを可視化してみよう | 画像データを読み込んでみよう | データを読み込んで把握しよう | データ結合とデータ正規化 |
データを結合(ユニオン)してみよう | データの揺れを見てみよう | 顧客データを整形しよう | クラスタリングで顧客をグループ化しよう | 退会前月の退会顧客データを作成しよう | 現状の輸送量、コストを確認してみよう | 最適輸送ルートをネットワークで確認しよう | 口コミによる情報伝播の様子を可視化してみよう | 映像データを読み込んでみよう | 不要な文字を除外してみよう | 機械学習 |
売上データ同士を結合(ジョイン)してみよう | データに揺れがあるまま集計してみよう | 顧客データの基礎集計をしよう | クラスタリング結果を分析しよう | 継続顧客のデータを作成しよう | ネットワークを可視化してみよう | 最適輸送ルートが制約条件内に収まっているかどうかを確認しよう | 口コミ数の時系列変化をグラフ化してみよう | 映像を画像に分割し、保存してみよう | 文字数をカウントしてヒストグラムを表示してみよう | 最適化問題 |
マスターデータを結合(ジョイン)してみよう | 商品名の揺れを補正しよう | 最新顧客データの基礎集計をしてみよう | クラスタリング結果を可視化してみよう | 予測する月の在籍期間を作成しよう | ネットワークにノード(頂点)を追加してみよう | 生産計画に関するデータを読み込んでみよう | 会員数の時系列変化をシミュレーションしてみよう | 画像内のどこに人がいるのかを検出してみよう | 形態素解析で文章を分割してみよう | |
必要なデータ列を作ろう | 金額欠損値の補完をしよう | 利用履歴データを集計しよう | クラスタリング結果をもとに退会顧客の傾向を把握しよう | 欠損値を除去しよう | ルートの重みづけを実施しよう | 利益を計算する関数を作ってみよう | パラメータの全体像を、「相図」を見ながら把握しよう | 画像内の人の顔を検出してみよう | 形態素解析で文章から「動詞・名詞」を抽出してみよう | |
データ検算をしよう | 顧客名の揺れを補正しよう | 利用履歴データから定期利用フラグを作成しよう | 翌月の利用回数予測を行うための準備をしよう | 文字列型の変数を処理できるように整形しよう | 輸送ルート情報を読み込んでみよう | 生産最適化問題を解いてみよう | 実データを読み込んでみよう | 画像内の人がどこに顔を向けているのかを検出してみよう | 形態素解析で抽出した頻出する名詞を確認してみよう | |
各種統計量を把握しよう | 日付の揺れを補正しよう | 顧客データと利用履歴データを結合しよう | 特徴となる変数を付与しよう | 決定木を用いて退会予測モデルを作成してみよう | 輸送ルート情報からネットワークを可視化してみよう | 最適生産計画が制約条件内に収まっているかどうかを確認しよう | リンク数の分布を可視化しよう | 検出した情報を統合し、タイムラプスを作ってみよう | 関係のない単語を除去してみよう | |
月別でデータを集計してみよう | 顧客名をキーに2つのデータを結合(ジョイン)しよう | 会員期間を計算しよう | 来月の利用回数予測モデルを作成しよう | 予測モデルの評価を行い、モデルのチューニングをしてみよう | 輸送コスト関数を作成しよう | ロジスティクスネットワーク設計問題を解いてみよう | シミュレーションのために実データからパラメータを推定しよう | 全体像をグラフにして可視化してみよう | 顧客満足度と頻出単語の関係を見てみよう | |
月別、商品別でデータを集計してみよう | クレンジングしたデータをダンプしよう | 顧客行動の各種統計量を把握しよう | モデルに寄与している変数を確認しよう | モデルに寄与している変数を確認しよう | 制約条件を作ってみよう | 最適ネットワークにおける輸送コストとその内訳を計算しよう | 実データとシミュレーションを比較しよう | 人通りの変化をグラフで確認しよう | アンケート毎の特徴を表現してみよう | |
商品別の売上推移を可視化してみよう | データを集計しよう | 退会ユーザーと継続ユーザーの違いを把握しよう | 来月の利用回数を予測しよう | 顧客の退会を予測しよう | 輸送ルートを変更して、輸送コスト関数の変化を確認しよう | シミュレーションによる将来予測を実施しよう | 移動平均を計算することでノイズの影響を除去しよう | 類似アンケートを探してみよう |
価格: 2,400円(税別)
大きさ: A5(w14.8 × h21 cm)
重さ: 346g
厚み: 2cm
色: モノクロ
発行: 2019.09.27
使用されている Python Version: Python3.7
本の公式ページ: 秀和システム社
感想
一通り Python の基礎を終えた方にはうってつけの一本。 今までの参考書に比べて書かれていることのレベルが一気に上がり、 Pandas や NumPy の取り扱い能力が上昇すると思います。人工知能系の本を読んでも理解できなかった方、基本である Pandas や NumPy が本著で学べますよ。
また画像解析では、 "Python = 画像" というとディープラーニングして、画像認識して、という流れをイメージしがちですが、こちらでは OpenCV で画像処理。目的達成を最短距離でプログラムされていますので、エンジニア・デビューを考えている方には必読本と言えそうです。
ただし、各 CSV ファイルのデータは、事前に用意したある程度扱いやすいデータがほとんど。そのため "生々しい" 感じはなく、整形された学習ロードといった感じ。
Pythonではじめる機械学習――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
1章 | 2章 | 3章 | 4章 | 5章 | 6章 | 7章 | 8章 |
---|---|---|---|---|---|---|---|
はじめに | 教師あり学習 | 教師なし学習と前処理 | データの表現と特徴量エンジニアリング | モデルの評価と改良 | アルゴリズムチェーンとパイプライン | テキストデータの処理 | おわりに |
1.1 なぜ機械学習なのか? | 2.1 クラス分類と回帰 | 3.1 教師なし学習の種類 | 4.1 カテゴリ変数 | 5.1 交差検証 | 6.1 前処理を行う際のパラメータ選択 | 7.1 文字列として表現されているデータのタイプ | 8.1 機械学習問題へのアプローチ |
1.1.1 機械学習問題へのアプローチ械学習で解決可能な問題 | 2.2 汎化、過剰適合、適合不足 | 3.2 教師なし学習の難しさ | 4.1.1 ワンホットエンコーディング(ダミー変数) | 5.1.1 scikit-learnでの交差検証 | 6.2 パイプラインの構築 | 7.2 例題アプリケーション:映画レビューのセンチメント分析 | 8.1.1 人間をループに組み込む |
1.1.2 タスクを知り、データを知る | 2.2.1 モデルの複雑さとデータセットの大きさ | 3.3 前処理とスケール変換 | 4.1.2 数値でエンコードされているカテゴリ | 5.1.2 交差検証の利点 | 6.3 パイプラインを用いたグリッドサーチ | 7.3 Bag of Wordsによるテキスト表現 | 8.2 プロトタイプから運用システムへ |
1.2 なぜ Pythonなのか? | 2.3 教師あり機械学習アルゴリズム | 3.3.1 さまざまな前処理 | 4.2 ビニング、離散化、線形モデル、決定木 | 5.1.3 層化 k分割交差検証と他の戦略 | 6.4 汎用パイプラインインターフェイス | 7.3.1 トイデータセットに対する BoW | 8.3 運用システムのテスト |
1.3 scikit-learn | 2.3.1 サンプルデータセット | 3.3.2 データ変換の適用 | 4.3 交互作用と多項式 | 5.2 グリッドサーチ | 6.4.1 make_pipelineによる簡便なパイプライン生成 | 7.3.2 映画レビューの BoW | 8.4 独自 Estimatorの構築 |
1.3.1 scikit-learnのインストール | 2.3.2 k-最近傍法 | 3.3.3 訓練データとテストデータを同じように変換する | 4.4 単変量非線形変換 | 5.2.1 単純なグリッドサーチ | 6.4.2 ステップ属性へのアクセス | 7.4 ストップワード | 8.5 ここからどこへ行くのか |
1.4 必要なライブラリとツール | 2.3.3 線形モデル | 3.3.4 教師あり学習における前処理の効果 | 4.5 自動特徴量選択 | 5.2.2 パラメータの過剰適合の危険性と検証セット | 6.4.3 GridSearchCV内のパイプラインの属性へのアクセス | 7.5 tf.idfを用いたデータのスケール変換 | 8.5.1 理論 |
1.4.1 Jupyter Notebook | 2.3.4 ナイーブベイズクラス分類器 | 3.4 次元削減、特徴量抽出、多様体学習 | 4.5.1 単変量統計 | 5.2.3 交差検証を用いたグリッドサーチ | 6.5 前処理ステップとモデルパラメータに対するグリッドサーチ | 7.6 モデル係数の調査 | 8.5.2 他の機械学習フレームワークとパッケージ |
1.4.2 NumPy | 2.3.5 決定木 | 3.4.1 主成分分析( PCA) | 4.5.2 モデルベース特徴量選択 | 5.3 評価基準とスコア | 6.6 グリッドサーチによるモデルの選択 | 7.7 1単語よりも大きい単位の Bag-of-Words (n-グラム ) | 8.5.3 ランキング、推薦システム、その他の学習 |
1.4.3 SciPy | 2.3.6 決定木のアンサンブル法 | 3.4.2 非負値行列因子分解( NMF) | 4.5.3 反復特徴量選択 | 5.3.1 最終的な目標を見失わないこと | 6.7 まとめと展望 | 7.8 より進んだトークン分割、語幹処理、見出し語化 | 8.5.4 確率モデル、推論、確率プログラミング |
1.4.4 matplotlib | 2.3.7 カーネル法を用いたサポートベクタマシン | 3.4.3 t-SNEを用いた多様体学習 | 4.6 専門家知識の利用 | 5.3.2 2クラス分類における基準 | 7.9 トピックモデリングと文書クラスタリング | 8.5.5 ニューラルネットワーク | |
1.4.5 pandas | 2.3.8 ニューラルネットワーク(ディープラーニング) | 3.5 クラスタリング | 4.7 まとめと展望 | 5.3.3 多クラス分類の基準 | 7.9.1 LDA(Latent Dirichlet Allocation) | 8.5.6 大規模データセットへのスケール | |
1.4.6 mglearn | 2.4 クラス分類器の不確実性推定 | 3.5.1 k-meansクラスタリング | 5.3.4 回帰の基準 | 7.10 まとめと展望 | 8.5.7 名誉を得る | ||
1.5 Python 2 vs. Python 3 | 2.4.1 決定関数( Decision Function) | 3.5.2 凝集型クラスタリング | 5.3.5 評価基準を用いたモデル選択 | 8.6 結論 | |||
1.6 本書で用いているバージョン | 2.4.2 確率の予測 | 3.5.3 DBSCAN | 5.4 まとめと展望 | ||||
1.7 最初のアプリケーション:アイリスのクラス分類 | 2.4.3 多クラス分類の不確実性 | 3.5.4 クラスタリングアルゴリズムの比較と評価 | |||||
1.7.1 データを読む | 2.5 まとめと展望 | 3.5.5 クラスタリング手法のまとめ | |||||
1.7.2 成功度合いの測定:訓練データとテストデータ | 3.6 まとめと展望 | ||||||
1.7.3 最初にすべきこと:データをよく観察する | |||||||
1.7.4 最初のモデル: k-最近傍法 | |||||||
1.7.5 予測を行う | |||||||
1.7.6 モデルの評価 | |||||||
1.8 まとめと今後の展望 |
価格: 3,740円(税込)
大きさ: w18.3 × h23.3 cm
重さ: 646g
厚み: 2.7cm
色: モノクロ
発行: 2017.05
使用されている Python Version: Python3.5
本の公式ページ: O'Reilly Japan
感想
今回ご紹介する中で一番難しい本と思います。ディープラーニングこそ行っていないものの、データセットは scikit-learn からインポートしていますので、 CSV や JSON、画像ファイルに慣れている私達としては、 "実体" の見えにくいデータを使ってラーニングが行われていきます。そのため 「あれっ、これってナニやってるの?」 「で、結局何だったの?」 となりがち。各セクション 80ぐらいある Jupyter Notebook のセルを丁寧に読んでいくには、モチベーションと根気、集中力が必用と思いました。
前半部分が乳がん予測や画像認識、後半はより精度の高いモデルを作成するためのメソッドが紹介されています。後半はかなり専門的で、学習目的が明確でないと続きません。参考程度にキーワードを拾っておくのでもいいと思いましたね。
ちなみに本著は、 Python 3.5 で実行されていますが、 Python 3.8 でも動きました。(Windows10、 Anaconda) Python 3.5 の環境を再現したい場合は、以下のコマンドで Jupyter Notebook の環境を設定すると ◎ でしょう。コマンド実行後、カーネル設定を "python3.5" に。
conda create -n py35 python=3.5 anaconda
conda activate py35
conda install ipykernel
ipython kernel install --user --name python3.5
jupyter notebook
エキスパートPythonプログラミング 改訂2版
第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 第7章 | 第8章 | 第9章 | 第10章 | 第11章 | 第12章 | 第13 | 第14章 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
現在のPythonのステータス | 構文ベストプラクティス—— クラス以外 | 構文ベストプラクティス —— クラスの世界 | 良い名前を選ぶ | パッケージを作る | コードをデプロイする | 他言語によるPythonの拡張 | コードの管理 | プロジェクトのドキュメント作成 | テスト駆動開発 | 最適化 —— 一般原則とプロファイリングテクニック | 最適化 —— いくつかの強力な解決方法 | 並行処理 | Pythonのためのデザインパターン |
1.1 われわれは今どこにいて、どこに行こうとしているのか? | 2.1 Pythonの組み込み型 | 3.1 組み込みクラスのサブクラス化 | 4.1 PEP 8と命名規則のベストプラクティス | 5.1 パッケージ作成 | 6.1 The Twelve-Factor App | 7.1 他言語 = C/C++ | 8.1 バージョン管理システム | 9.1 技術文書を書くための 7つのルール | 10.1 テストをしていない人へ | 11.1 3つのルール | 12.1 複雑度を下げる | 13.1 なぜ並行処理が必要なのか? | 14.1 生成に関するパターン |
1.2 Pythonはなぜ/どのように変化するのか? | 2.1.1 文字列とバイト列 | 3.2 スーパークラスのメソッドへのアクセス | 4.1.1 どうして、いつPEP 8に従うのか | 5.1.1 混乱するPythonパッケージングツールの状態 | 6.2 Fabricを用いたデプロイの自動化 | 7.1.1 C/C++による拡張 | 8.1.1 中央集中型システム | 9.1.1 2つのステップで書く | 10.1.1 テスト駆動開発の原則 | 11.1.1 まず、動かす | 12.1.1 循環的複雑度 | 13.2 マルチスレッド | 14.1.1 Singletonパターン |
1.3 PEP文書から最新の変更情報を得る | 2.1.2 コレクション | 3.2.1 旧スタイルクラスとPython 2のsuper | 4.1.2 PEP 8のその先へ —— チーム固有のスタイルガイドライン | 5.1.2 プロジェクトの設定 | 6.3 専用のパッケージインデックスやミラーを用意する | 7.2 拡張を使う理由 | 8.1.2 分散型システム | 9.1.2 読者のターゲットを明確にする | 10.1.2 どのような種類のテストがあるのか? | 11.1.2 ユーザー視点で考える | 12.1.2 ビッグオー記法 | 13.2.1 マルチスレッドとは? | 14.2 構造に関するパターン |
1.4 本書執筆時点でのPython 3の浸透度合い | 2.2 高度な文法 | 3.2.2 Pythonのメソッド解決順序(MRO)を理解する | 4.2 命名規則のスタイル | 5.1.3 カスタムセットアップコマンド | 6.3.1 PyPIをミラーリングする | 7.2.1 コードのクリティカルな部分の性能を向上する | 8.1.3 中央集中か、分散か? | 9.1.3 シンプルなスタイルを使用する | 10.1.3 Pythonの標準テストツール | 11.1.3 可読性とメンテナンス性を保つ | 12.2 シンプルにする | 13.2.2 Pythonはどのようにスレッドを扱うのか? | 14.2.1 Adapterパターン |
1.5 Python 3とPython 2の主な違い | 2.2.1 イテレータ | 3.2.3 superの落とし穴 | 4.2.1 変数 | 5.1.4 開発時にパッケージを利用する | 6.3.2 パッケージを使ったデプロイ | 7.2.2 別の言語で書かれたコードを利用する | 8.1.4 できればGitを使う | 9.1.4 情報のスコープを絞る | 10.2 テストをしている人へ | 11.2 最適化戦略 | 12.2.1 リストからの探索 | 13.2.3 いつスレッドを使うべきか? | 14.2.2 Proxyパターン |
1.5.1 なぜそれを気にする必要があるのか? | 2.2.2 yield文(ジェネレータ) | 3.2.4 ベストプラクティス | 4.3 名前づけガイド | 5.2 名前空間パッケージ | 6.4 一般的な慣習と実践 | 7.2.3 サードパーティー製の動的ライブラリを利用する | 8.1.5 Git flowとGitHub flow | 9.1.5 実在するようなコードのサンプルを使用する | 10.2.1 ユニットテストの落とし穴 | 11.2.1 外部の原因を探す | 12.2.2 listの代わりにsetを使う | 13.3 マルチプロセス | 14.2.3 Facadeパターン |
1.5.2 主な構文上の違いと、よくある落とし穴 | 2.2.3 デコレータ | 3.3 高度な属性アクセスのパターン | 4.3.1 ブール値の名前の前にhasかisをつける | 5.2.1 なぜこれが便利なのか? | 6.4.1 ファイルシステムの階層 | 7.2.4 カスタムのデータ構造を作る | 8.2 継続的開発プロセス | 9.1.6 なるべく少なく、かつ十分なドキュメント | 10.2.2 代替のユニットテストフレームワーク | 11.2.2 ハードウェアを拡張する | 12.2.3 外部呼び出しを減らす | 13.3.1 組み込みのmultiprocessingモジュール | 14.3 振る舞いに関するパターン |
1.5.3 バージョン間の互換性を保つときによく利用されるツールやテクニック | 2.3 知っておくべきその他の文法 | 3.3.1 ディスクリプタ | 4.3.2 コレクションの変数名は複数形にする | 5.2.2 PEP 420 —— 暗黙の名前空間パッケージ | 6.4.2 環境の分離 | 7.3 拡張を書く | 8.2.1 継続的インテグレーション | 9.1.7 テンプレートの使用 | 10.2.3 テストカバレッジ | 11.2.3 スピードテストを書く | 12.3 collectionsモジュールを使う | 13.4 非同期プログラミング | 14.3.1 Observerパターン |
1.6 CPython以外の世界 | 2.3.1 for … else節 | 3.3.2 プロパティ | 4.3.3 辞書型に明示的な名前をつける | 5.2.3 以前のバージョンのPythonにおける名前空間パッケージ | 6.4.3 プロセス監視ツールを使う | 7.3.1 ピュアC拡張 | 8.2.2 継続的デリバリー | 9.2 reStructuredText入門 | 10.2.4 スタブとモック | 11.3 ボトルネックを見つける | 12.3.1 deque | 13.4.1 協調的マルチタスクと非同期I/O | 14.3.2 Visitorパターン |
1.6.1 なぜCPython以外も考慮すべきなのか | 2.3.2 関数アノテーション | 3.3.3 スロット | 4.3.4 汎用性の高い名前を避ける | 5.3 パッケージのアップロード | 6.4.4 アプリケーションコードはユーザー空間で実行しよう | 7.3.2 Cython | 8.2.3 継続的デプロイメント | 9.2.1 セクション構造 | 10.2.5 テスト環境と依存関係の互換性 | 11.3.1 CPU使用量のプロファイル | 12.3.2 defaultdict | 13.4.2 Pythonにおけるasyncとawait | 14.3.3 Templateパターン |
1.6.2 Stackless Python | 2.4 まとめ | 3.4 メタプログラミング | 4.3.5 既存の名前を避ける | 5.3.1 PyPI —— Python Package Index | 6.4.5 リバースHTTPプロキシを使う | 7.4 拡張のデメリット | 8.2.4 継続的インテグレーションを行うのに人気のあるツール | 9.2.2 Lists | 10.2.6 ドキュメント駆動開発 | 11.3.2 メモリ使用量のプロファイル | 12.3.3 namedtuple | 13.4.3 以前のバージョンにおけるasyncio | 14.4 まとめ |
1.6.3 Jython | 3.4.1 デコレータ —— メタプログラミングの方法 | 4.4 引数のベストプラクティス | 5.3.2 ソースパッケージとビルド済みパッケージ | 6.4.6 プロセスのgracefulリロード | 7.4.1 増加する複雑さ | 8.2.5 適切なツール選択とよくある落とし穴 | 9.2.3 インラインマークアップ | 10.3 まとめ | 11.3.3 Cコードのメモリリーク | 12.4 トレードオフを利用する | 13.4.4 非同期プログラミングの実践例 | ||
1.6.4 IronPython | 3.4.2 クラスデコレータ | 4.4.1 反復型設計を行いながら引数を作成する | 5.4 スタンドアローン実行形式 | 6.5 動作の追跡とモニタリング | 7.4.2 デバッグ | 8.3 まとめ | 9.2.4 リテラルブロック | 11.3.4 ネットワーク使用量のプロファイル | 12.4.1 ヒューリスティクスや近似アルゴリズムを使う | 13.4.5 Futureを利用して同期コードを結合する | |||
1.6.5 PyPy | 3.4.3 __new__()メソッドによるインスタンス作成プロセスのオーバーライド | 4.4.2 引数とテストを信頼する | 5.4.1 スタンドアローンの実行形式が便利な場面 | 6.5.1 エラーログ収集 —— sentry/raven | 7.5 拡張を使わずに動的ライブラリを利用する | 9.2.5 リンク | 11.4 まとめ | 12.4.2 タスクキューを使って遅延処理を行う | 13.5 まとめ | ||||
1.7 現代的なPython開発の手法 | 3.4.4 メタクラス | 4.4.3 魔法の引数である*argsと**kwargsは注意して使用する | 5.4.2 人気のあるツール | 6.5.2 モニタリングシステムとアプリケーションメトリクス | 7.5.1 ctypes | 9.3 ドキュメントの構築 | 12.4.3 確率的データ構造を利用する | ||||||
1.8 アプリケーションレベルでのPython環境の分離 | 3.4.5 コード生成のTips | 4.5 クラス名 | 5.4.3 実行可能形式のパッケージにおけるPythonコードの難読化 | 6.5.3 アプリケーションログの処理 | 7.5.2 CFFI | 9.3.1 ポートフォリオの構築 | 12.5 キャッシュ | ||||||
1.8.1 なぜ分離が必要なのか? | 3.5 まとめ | 4.6 モジュール名とパッケージ名 | 5.5 まとめ | 6.5.4 ログを処理するツール | 7.6 まとめ | 9.4 自分自身のポートフォリオを構築する | 12.5.1 決定的キャッシュ | ||||||
1.8.2 人気のあるソリューション | 4.7 役に立つツール | 6.6 まとめ | 9.4.1 ランドスケープの構築 | 12.5.2 非決定的キャッシュ | |||||||||
1.8.3 どのツールを選択すべきか? | 4.7.1 Pylint | 9.4.2 ドキュメントのビルドと継続的インテグレーション | 12.5.3 キャッシュサーバー | ||||||||||
1.9 システムレベルでの環境の分離 | 4.7.2 pycodestyleとflake8 | 9.5 まとめ | 12.6 まとめ | ||||||||||
1.9.1 Vagrantを使った仮想的な開発環境 | 4.8 まとめ | ||||||||||||
1.9.2 コンテナ化VS仮想化 | |||||||||||||
1.10 人気のある生産性向上ツール | |||||||||||||
1.10.1 拡張インタラクティブセッション —— IPython, bpython, ptpythonなど | |||||||||||||
1.10.2 インタラクティブデバッガ | |||||||||||||
1.11 役に立つリソース | |||||||||||||
1.12 まとめ |
価格: 2,880円(税別)
大きさ: w18.3 × h23.4 cm
重さ: 881g
厚み: 3cm
色: モノクロ
発行: 2018.02.26
使用されている Python Version: Python3.6
本の公式ページ: 達人出版会
感想
前半は Python の動向や今後の方向性、それから基本文法の "プロっぽい" 書き方を紹介。後半は、コードのデプロイや C/C++ との接続、プロジェクトの管理や最適化などが紹介。今までこれでいい、と思っていたことも、実はもっと違ういい方法がある、と気づく場面もあると思います。個人的にはとりあえずサーバーで Python を実行するとき、 nohup や tmux を使ってプログラムを動かしていましたが、こちらの本によると、
「それはサービスが失敗するようにプロジェクトを設計するようなもの」、 とバッサリ切り捨てています...(p232 6.4.3 プロセス監視ツールを使う より)
また Django のデプロイも数十台のサーバーを対象にした方法が紹介されており、 "業務用だな" と痛感。ただ、書内の Django は 1系。
その他には for ... else...
というループ処理の方法や Pylist というソースコード・アナライザなどプロっぽいツールがたくさん紹介。 Python で食って生きたいエンジニア志望の方にとっては必読本、かもしれませんね。
番外編!AI系Python参考書
Python = AI(人工知能)という方も多いと思います。数多くある本の中から注目の 3冊をご紹介させて頂きます。
Pythonで儲かるAIをつくる
こちらは現在 Amazon で #1 Best Seller
の本で、Python と AI をビジネスシーンに落とし込むための参考書になります。ビジネスパーソンで AI? 人工知能? という方にはぴったりの一冊と言えるでしょう。
出来上がったコードをネット上でボタン一つで実行できますので、AI についてより深くイメージができるようになる入門書と思います。
価格: 3,190円(税込)
発行: 2020.08.11
Python実行環境: Google Colab(ネット上)
今すぐ試したい! 機械学習・深層学習(ディープラーニング) 画像認識プログラミングレシピ
AIといえば「物体認識」ですよね。こちらの参考書では、Python でできる物体認識技術を様々なツールを使って実際に体験できるように紹介。
OpenCV に Rasberry Pi + OpenCV、それから Chainer に PyTorch、 TensorFlow 、 YOLO と項目は盛り沢山です。
価格: 2,990円(税別)
発行: 2019.06.19
Python実行環境: 主に Anaconda、Jupyter Notebook
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
発行から 4年経っても人気の名著。内容は少し専門的ではありますが、AIのラーニングやAIの持つ感覚を学習することができます。
私をはじめ多くの方が読み、プログラムを実行した本になりますので AI を見据えて Python を学ぶ方には必読本と言えるでしょう。
価格: 3,740円(税込)
発行: 2016.09
Python実行環境: 主に Anaconda、Jupyter Notebook
Python本で独学を成功させる方法
今回レベル別にPython本をご紹介させて頂いて、2,3冊やれば自分も Python でお金を稼げる、 IT系企業への就職に有利になる、AI社会にも適応できる、とお考えになる方もいらっしゃると思います。 お仕事面で、参考までに本日届いた Python の案件をみてみますと、
- 「文書からのキーワード抽出プログラムの作成(自然言語処理) 500,000〜1,000,000円 」
- 「WEBスクレイピングでECサイトの価格情報収集のシステム開発 20,000〜50,000円 」
via Lancers
いかがでしょうか? ちょっと Python の基礎だけでは厳しそうですよね。 上の自然言語処理については、 Google の 「Natural Language API」 を使うにしても Google 特有の API、 SDK を使う感覚はちょっとプログラミング初心者では厳しいと思います。またプログラム処理の精度の検証などを考えると幅広いデータ処理の知見が求められますね。
また下側の Web スクレイピングでは、HTML、CSS の構造を初め、場合によってはデータベースの知識も必要に。「あれ、Python だけじゃダメじゃん」、確かに Python でお仕事をしようと思うと関係する知識も必要になってきますが、私も含め Python を使ってお仕事をする人みんなが通ってきた道です。
一つの成功法としては、諦めずに高いモチベーションを維持して、エラーを好きになることでしょう。しかし、「諦めない」「モチベーション」「エラー❤️」どれも普通は難しいです。 この辺りが自分一人で解決できる方は独学でも成功できると思いますが、みんながみんなそうではないでしょう。 本がダメだったら動画や YouTube、それがダメだったら... メンター(先生)を頼って見る方法がいいかもしれませんね。
また Python 学習のモチベーションを維持するポイントに、「へ〜、こんなことも Python でできるんだ」という発見があれば、またコードを書く気にもなれますよね。例えば「囲碁界最強のアルゴリズムAlphaGoを使ってみよう」とか「Pythonで動くDjango製ブログのご紹介」、 Pythonを Webページに応用できたら、一気にできることが増えそうですよね。
\AIエンジニアに必要なスキルが身に付く/
まとめ
”本”ってタイトルや目次を見ているだけでもワクワクして、希望が湧いてきますよね。 今回ご紹介させていただいた本も、本当にそれぞれ特徴があって、私達のニーズを満たしてくれるなと思いました。
ただ書籍で紹介できる内容には "限界" があり、常に "執筆時点" という時間的問題があります。 「読みやすい」「記録しやすい」 などペーパーベースの媒体には様々な特徴がありますが、 Python 学習にとって一番大事なものってナニでしょうか?
私にとって Python 学習で一番大事だなと思うことは、 "質" です。例えば今回 9冊本を読んで、 Python の仮想環境に触れている本は 3冊。あとの 6冊 は、仮想環境の知識"ありき"で話を進めているものもあれば、文量的問題か何かで仮想環境登場せず...といった状況。過去に 「仮想環境やっときゃよかったな」 と後悔経験のある私個人としては、レッスン内容や読みやすさも大事ですが、必用なことをきちんと伝えてくれる媒体の方が大事、と思っています。そうした意味も含めて "質" は、 Python 学習において一番大事と思っていますね。
「あぁ...この参考書よく分からない、他のを買うべきか...」「本を読んでも、プログラムの内容が分割されて紹介されているので分かりにくい..」 という方、一度学習環境を見なおして見ませんか?
本来 Python は読みやすく、プログラムを動かしたり、書いたりしていて楽しいものです。もし「楽しくない」と思っているなら、それはもったいないかもしれませんし、間違っているのかもしれません。
頼るところを "参考書" ではなく、"先生" に変えてみませんか? CodeCamp では完全オンラインでレッスンを行っていますので、 "場所" を選ばずに自分のペースで学習を進めていくことが可能です、必用なものは "お金" と "やる気"。
もし "やる気" はあって、「プログラミング・スクール高いかな...」と思っている状況であれば、一度 "無料体験" で本当に高いかどうかチェックしてみませんか? CodeCamp社は東証一部上場企業のグループに属していますので、申し込みや体験は比較的ご安心頂けると思いますよ。
無料体験に関する情報は、公式ページよりチェックしてみて下さい。
昨今のプログラミング・ニーズの高まりを受けて、無料体験枠が埋まっている日もあります。予め、ご了承ください。
- この記事を書いた人
- オシママサラ