- 小波 秀雄, 2019: Python [パイソン]ではじめるプログラミング — データ処理までしっかりマスター。インプレス, 279 pp. ISBN 978-4-295-00606-0.
2019年4月に出た、横はB5判なみ、縦はA5判よりすこし大きめの、横書きのペーパーバック。わたしは、著者がネット上で宣伝していたのをみて、2020年1月に買った。しかし、読んでいなかった。2021年から、気象に関する計算の教材を Python でつくることになって、複数の教科書のひとつとして、これにも目をとおしておくことにした。
著者はもともと化学を専門としていたが、本書を書いたころは大学教員としておもに情報処理と統計学を教えていた。プログラム言語としては Ruby をはやくからつかっていたことで知られ、その教科書もある。だから本書も、多くのプログラミング言語 (手順立て型にかぎられるかもしれないが) に共通なかんがえかたを、具体的な表現は Python に即して、説明するものになっているとおもう (内容を検討をしたうえでの評価ではないが)。
想定されたPython のバージョンは 3.6.3 である。実行環境としては Unix系OS (Linuxなど) のコマンドラインを想定している。MS Windows での実行方法については、「付録 A」で紹介する「サポートページ」でのべるとあり、そのページ (著者の個人サイト) は 2024-06-16 現在もある。そこでは、Windows 上に なるべく Linux に似た実行環境をつくることがすすめられており、その具体的な例 (WSL, VirtualBox) があげられている。
エディタとしては、vim と emacs のなまえをあげたうえで、atom という軽い (機能の種類がすくない) エディタを紹介している (キー操作の説明は付録 A にある) が、エディタ操作に深入りすることはない。
Python 処理系のうごかしかたとしては、python コマンドをファイル名なしで起動して Python言語の文をうけつける対話型モードでつかう方法と、Python言語のスクリプトをつくっておいて python コマンドでスクリプトファイル名を指定して実行する方法を併用している。Pythonの機能の紹介は対話型、まとまったしごとをする例はスクリプト型であつかっている。
応用のたねになる例として、テキストファイルのデータベース的あつかい (名簿を例として)、数学関数のグラフ作図、一変量と二変量の統計の初歩をあつかっている。
折りかえしのあとに目次をつける。
===== 目次 ====
まえがき
– 本書の構成
– Pythonのバージョンについて
– Pythonの実行環境について
– 謝辞
第1章 Pythonを始める
– 1-1 データ分析だったら Python!
– 1-2 プログラミングのための準備をしよう
– – 1-2-1 プログラミングってどういう作業?
– – 1-2-2 プログラミング環境を作る
– – 1-2-3 エディタについて
– 1-3 超簡単 Unix コマンド
– – 1-3-1 10分間 Unix 体験ツアー
– 1-4 エディタで最初のプログラムを書いてみる
第2章 Python 超入門と基礎知識
– 2-1 Python のインタプリタで計算しよう
– – 2-1-1 ターミナルからインタプリタを立ち上げる
– – 2-1-2 インタプリタを電卓のように使う
– – 2-1-3 算術演算の仕組みを理解する
– – 2-1-4 変数を使うとさらに便利
– – 2-1-5 いろいろな代入のやり方を試してみよう
– – 2-1-5 自己代入を活用しよう
– 2-2 あいさつプログラムを書こう
– – 2-2-1 見やすいソースを書こう
第3章 データを扱う簡単なプログラム
– 3-1 データ入力の基本を学ぼう
– – 3-1-1 Python の組み込み型データ
– – 3-1-2 キーボードからデータを入力する
– – 3-1-3 コンストラクタでデータの型を返還する
– – 3-1-4 プログラムを改良してみよう
– – 3-1-5 キーワード引数で print の改行を制御する
– – 3-1-6 文字列フォーマットで変数の値を文字列中に埋め込む
– – 3-1-7 変数名と予約語について
– 3-2 コマンドライン引数を使ったデータ入力
– 3-3 乱数を使う
– – 3-3-1 random モジュールで乱数発生
– – 3-3-2 乱数の「種」を使って系列を固定する
第4章 論理的条件で処理を分岐させる
– 4-1 if ステートメントによる条件判断
– – 4-1-1 単純な条件判断のプログラム
– – 4-1-2 インデントは Python の命!
– – 4-1-3 else を使った条件分岐
– – 4-1-4 else と elif を使った多重の条件分岐
– 4-2 論理をプログラムする
– – 4-2-1 論理式とブール値
– – 4-2-2 論理式同士を組み合わせる
– – 4-2-3 論理演算子、比較演算子
– – 4-2-4 倍数かどうかを判定する
– – 4-2-5 複合した条件をネストした分岐で判定するプログラム
– – 4-2-6 複合した条件をブール演算で判定するプログラム
– – 4-2-7 三項演算子について
第5章 シーケンスとその他のデータ構造
– 5-1 並んだデータをシーケンスで扱う
– – 5-1-1 リスト — 最も重要なデータ構造
– – 5-1-2 より高度なスライシング
– – 5-1-3 コマンドライン引数とリストの関係を知る
– – 5-1-4 レンジ — 中が見えない整数のリスト
– – 5-1-5 変更できないシーケンス — タプルと文字列
– – 5-1-6 テキストシーケンスの独特の振るまい
– 5-2 シーケンスを操作するメソッド群
– – 5-2-1 ちょっとだけオブジェクト指向の話
– – 5-2-2 シーケンス同士の変換
– – 5-2-3 シーケンス操作の演算とメソッド・関数群
– – 5-2-4 リスト内包表記でリストの要素を加工する
– – 5-2-5 キーワード引数でソートの振るまいを変える
– 5-3 集合型 — データ集合を扱う非シーケンスデータ型
– 5-4 ディクショナリ — 関連付けを表現するデータ型
– – 5-4-1 ディクショナリを操作する
– – 5-4-2 ディクショナリのキーはハッシャブルでないといけない
第6章 ループを使って高速で繰り返す
– 6-1 for ステートメントで繰り返す
– – 6-1-1 for ステートメントでリストやタプルのデータを処理する
– – 6-1-2 ループの中で条件判断を行う
– 6-2 while ステートメントで賢く繰り返す
– – 6-2-1 何かが起きたらループを止める
– – 6-2-2 無限ループと break を組み合わせる
– – 6-2-3 ネストしたループで組み合わせを処理する
– – 6-2-4 掛け算九九をプログラムする
– – 6-2-5 ネストしたシーケンス (二重シーケンス) を扱う
– – 6-2-6 ループの範囲が変化していく
第7章 テキスト情報の扱いとファイル入出力
– 7-1 文字情報の基礎知識
– – 7-1-1 ビット、バイト、文字コード
– – 7-1-2 アスキーファイルとテキストファイル
– 7-2 Python の文字列リテラル
– – 7-2-1 文字列型リテラルを作る
– – 7-2-2 もうひとつの文字列リテラル — ヒアドキュメント
– – 7-2-3 バックスラッシュによる行継続で長い文字列を扱う
– – 7-2-4 文字列リテラルのまとめ
– 7-3 標準入力、標準出力、標準エラー出力
– – 7-3-1 標準出力とリダイレクション
– – 7-3-2 標準エラー出力へのリダイレクション
– 7-4 エラーを処理する
– 7-5 テキストファイルを利用する
– – 7-5-1 ファイル読み込みの3つの基本形
– – 7-5-2 Read モードでファイルをオープンする
– – 7-5-3 ファイルを開いた後はどうするか
– – 7-5-4 シーケンスのようにファイルの情報を読み出す
– – 7-5-5 ファイルの情報全部を一気に読み込む
– – 7-5-6 ファイルアクセスを終えたらクローズする
– – 7-5-7 with を使ってクローズまで面倒をみる書き方
– – 7-5-8 ファイルに書き込む
– 7-6 表計算ソフトのデータを活用する
– – 7-6-1 CSV フォーマットはデータ共有の基本
– – 7-6-2 デリミタで区切られた文字列をリストに分解する
– – 7-6-3 CSV データをタブ区切りに変換する実用プログラム
– 7-7 機能分割して効率的にファイルデータを処理
– – 7-7-1 プログラムの理想的な形は?
– – 7-7-2 さらに進んだプログラムの構成 — 自前の関数を使う
– 7-8 名簿を扱うプログラム
– – 7-8-1 プログラムの仕様
– – 7-8-2 小さなファイルを用意して作業を楽にする
– – 7-8-3 データ読み込み部分を作る
– – 7-8-4 名簿をよみがな順に並べ替える
– – 7-8-5 結果を出力する
– – 7-8-6 ヘッダ行のあるファイルだったらどうするか
– 7-9 モジュールを活用してスマートな処理に
– – 7-9-1 CSV データを扱うモジュール
– – 7-9-2 モジュールを使って CSV ファイルに書き込む
第8章 関数をあやつる
– 8-1 自前の関数を作る
– – 8-1-1 関数の形と各部の名称
– – 8-1-2 関数名について
– – 8-1-3 戻り値を返す関数、返さない関数がある
– – 8-1-4 戻り値として複数のデータを返す
– 8-2 関数の活用とデータの共有
– – 8-2-1 関数の引数と仮引数の名前について
– – 8-2-2 変数のスコープについて
– – 8-2-3 関数の外で定義した変数はグローバルに振るまう
– – 8-2-4 無理やりグローバル変数化することもできる
– – 8-2-5 グローバル変数はなるべく使わないほうがよい
– – 8-2-6 組み込み関数と同じ名前の変数は使わないほうがよい
– 8-3 データ処理のための関数を設計する
– – 8-3-1 リストやタプルのデータを解析する
– – 8-3-2 関数に渡したリストは共有されている
– – 8-3-3 変換されたリストを非破壊的に得るには
第9章 基本的なアルゴリズムを実装する
– 9-1 探索とソート
– – 9-1-1 フラグを活用して逐次探索
– – 9-1-2 バブルソート
– 9-2 整数の除算を利用したアルゴリズム
– – 9-2-1 素数の判定
– – 9-2-2 エラトステネスのふるい
– – 9-2-3 ユークリッドの互除法
– 9-3 再帰的なアルゴリズム
– – 9-3-1 階乗を再帰的に計算する
– – 9-3-2 ハノイの塔
第10章 Python で数学を
– 10-1 数学ライブラリを活用する
– – 10-1-1 maplotlib.pyplot を使ってグラフを作る
– – 10-1-2 ライブラリの読み込み方を異なった表現で
– – 10-1-3 関数の式を使ってプロットするには
– – 10-1-4 数学関数のグラフを作っていく
– – 10-1-5 グラフに必要なものを追加していく
– – 10-1-6 複数のグラフを並べて表示する
– 10-2 データファイルを読み込んで統計用のグラフを作る
– – 10-2-1 NumPy で統計計算とデータの可視化
– – 10-2-2 NumPy の配列
– 10-3 Pytyon で統計データを扱う
– – 10-3-1 一変量データから統計量を求める
– – 10-3-2 ヒストグラムで分布を可視化する
– 10-4 二変量データを扱う
– – 10-4-1 二変量データを読み込む
付録 A 関連情報
– 付録 A.1 参考ウェブサイト
– 付録 A.2 Atom エディタ超入門
– 付録 A.3 UNIX の超基礎知識
– 付録 A.4 ASCIIコード表
– 付録 A.5 主な記号の読み方
– 付録 A.6 数値リテラルの形
– 付録 A.7 print 関数の文字列フォーマット
– 付録 A.8 リスト、シーケンスの仕様
– 付録 A.9 Math、NumPy の数学関数
付録 B 練習問題の解答と解説
索引
==========