2023年12月8日に『現場ですぐに使える!最新pythonプログラミング逆引き大全450の極意』が出版されました。
目次の俯瞰
現場ですぐに使える! 最新Pythonプログラミング逆引き大全450の極意 第1章 Pythonの概要 1-1 Pythonの基本事項 001 Pythonとは 002 Pythonのダウンロードとインストール 003 VSCodeのダウンロードとインストール 1-2 VSCodeのインストールと開発環境の用意 004 VSCodeを日本語化する 005 VSCodeの画面を好みの色調に変える 006 VSCodeの画面構成を確認する 007 Pythonで開発するための拡張機能をインストールする 1-3 VSCodeにおけるNotebookを用いたプログラミング 008 ワークスペースを用意してNotebookを作成する 009 Notebookを利用して仮想環境を作成する 000 VSCodeのNotebook画面 011 Notebookでプログラムを実行する 1-4 VSCodeにおけるPythonモジュールを用いたプログラミング 012 ワークスペースを開いた状態から仮想環境を作成する 013 Pythonのモジュールを作成してプログラムを実行する Column 仮想環境に関連付けられたターミナル 1-5 VSCodeを用いた外部ライブラリのインストール 014 VSCodeの[ターミナル]から外部ライブラリをインストールする 第2章 基本プログラミング 2-1 オブジェクトとデータ型 015 オブジェクトと変数 016 変数への代入 017 Pythonが扱うデータの種類 018 整数型 019 明示的にint型オブジェクトを生成する Column 変数名を付けるときのルール 020 バイト列⇔int型オブジェクトの相互変換 021 浮動小数点数型 022 明示的にfloat型オブジェクトを生成する 023 無限大と非数 024 文字列型 Column 変数名の命名規則 025 論理型 026 値が存在しないことを示す 027 ソースコードに説明文を書く 2-2 演算 028 算術演算子 029 代入演算子 030 複合代入演算子による式の簡略化 031 演算子の優先順位 032 論理演算子 033 ビット演算子 034 2進数の仕組み 035 小数の誤差を許さない10進浮動小数点数型 2-3 フロー制御 036 フロー制御の構成要素 Column なぜ2進数? 037 プログラムの流れを変える 038 「もしも」を並べて複数のパターンに対応する 039 同じ処理を繰り返す 040 条件が成立したらforループを開始する Column 補数の計算(int型の場合) 041 状況によって繰り返す処理の内容を変える 042 3つの処理をランダムに織り交ぜる 043 指定した条件が成立するまで繰り返す 044 無限ループを脱出する 045 ループ処理を途中で止めて次の繰り返しに移る 2-4 関数 046 処理だけを行う関数 047 引数を受け取る関数 048 処理結果を返す関数 049 パラメーター名を指定して引数を渡す 050 パラメーターに初期値を設定する Column フロー制御の2つの意味 051 プログラム全体で有効な変数と関数内でのみ有効な変数 052 ローカル変数はグローバルスコープや他のローカルスコープから使えない 053 グローバル変数の操作 054 例外処理 2-5 リスト 055 任意の数のデータを一括管理する 056 作成済みのリストに要素を追加する 057 リストから要素を取り出す 058 リスト要素の先頭から連続してアクセスする 059 連続値を持つリストを自動生成する 060 リスト要素を切り出す 0061 リストの更新、要素の追加、削除 062 リストの要素数を調べる 063 リストに別のリストの要素を追加する 064 指定した位置に要素を追加する 065 特定の要素を削除する 066 リストの要素を調べる 067 リストの要素をソートする 068 リストのコピー 069 リスト要素をリストにする 070 リスト内包表記でリストを作る 071 リスト内包表記でif...elseで条件分岐する 072 リスト内包表記で多重リスト(2次元配列)を作る 073 リスト内包表記を入れ子にして多次元のリストを作る 074 リスト内包表記で2つのリストの要素をペアでまとめる 075 リスト内包表記でインデックス付きのリストを作る 2-6 タプル 076 「変更不可」のデータを一括管理する 2-7 辞書 077 キーと値のペアでデータを管理する 078 辞書要素の参照/追加/変更/削除 079 辞書のキーをまとめて取得する 080 辞書の値だけを取得する 081 辞書の要素をまるごと取得する 082 辞書のキーと値をforでイテレートする 083 2要素のシーケンスを辞書に変換する 084 辞書に辞書を追加する 085 辞書の要素をまるごとコピーする 086 辞書の要素を削除する 2-8 複数のシーケンスのイテレート 087 3つのリストをまとめてイテレートする 088 2つのリストの各要素をタプルにまとめたリストを作る 089 2つのリストから辞書を作る 090 内包表記で辞書を作成する 2-9 集合 091 要素の重複を許さないデータ構造 092 集合を使って重複した要素を削除/抽出する 093 ユニオン/インターセクション 2-10 特殊な関数 094 伸縮自在のパラメーター 095 キーと値がセットになったパラメーター 096 関数オブジェクトと高階関数 097 関数内関数とクロージャー 098 小さな関数は処理部だけの「式」にしてしまう 099 ジェネレーターから1つずつ取り出す 100 ソースコードを書き換えずに関数に機能を追加する 2-11 クラスとオブジェクト 101 オブジェクトを定義する 102 スーパークラスを継承してサブクラスを作る(継承①) 103 インスタンス変数とオブジェクトの初期化メソッドを定義する(継承②) 104 3つのサブクラスのメソッドをランダムに呼び分ける(継承③) 105 プログラム開始時にインスタンスを生成する(継承④) 106 プロパティを使う 107 プロパティにチェック機能を組み込む 2-12 クラス変数、クラスメソッド 108 クラス変数、クラスメソッドを使う 第3章 文字列と日付の操作 3-1 文字列操作の基本 109 複数行の文字列を扱う 110 「\」で文字をエスケープして改行やタブを入れる 111 「"こん" + "にちは"」で文字列を連結する 112 「'ようこそ' * 4」で文字列を繰り返す 113 文字列の長さを調べる 114 文字列の中から必要な文字だけ取り出す 115 特定の文字を目印にして文字列を切り分ける 116 特定の文字を間に挟んで文字列同士を連結する 117 文字列の一部を置き換える 118 書式を設定して文字列を自動生成する 119 小数点以下の桁数を指定して文字列にする 120 数値を3桁で区切る 121 先頭/末尾が指定した文字列であるか調べる 122 文字列の位置を調べる 123 指定した文字列がいくつ含まれているか、その個数を取得する 124 英文字、または英文字と数字であるかを調べる 125 小文字筐。大文字/大文字筐。小文字への変換 126 テキストを右揃え/左揃え/中央揃えにする 127 クリップボードにコピーした文字列を読み込む 128 クリップボードの文字列を分割して行頭にコメント記号「#」を付ける 3-2 文字列の一部除去 129 正規表現にマッチする文字列を削除 130 文字列両端の空白文字を取り除く 131 文字列両端から指定した文字を取り除く 132 先頭の不要な文字を取り除く 133 末尾の不要な文字を取り除く 134 プレフィックス、サフィックスを取り除く 3-3 正規表現によるパターンマッチング 135 正規表現とは 136 正規表現オブジェクト 137 文字列だけのパターン 138 2つ以上のどれかにマッチさせる 139 パターンの位置を指定する 140 どれか1文字にマッチさせる 141 どれでも1文字にマッチさせる 142 文字列の繰り返しにマッチさせる 143 複数のパターンをまとめる 144 グループにマッチした文字をすべて取得する 145 特定のグループをスキップしてマッチングさせる 146 貪欲マッチと非貪欲マッチ 147 マッチング結果をすべて文字列で取得する 148 文字の集合を表す短縮形 149 独自の文字集合を定義する 150 ドットとアスタリスクであらゆる文字列とマッチさせる 151 ドット文字「.」を改行とマッチさせる 152 アルファベットの大文字/小文字を無視してマッチングさせる 153 正規表現で検索した文字列を置き換える 154 マッチした文字列の一部を使って置き換える 155 複雑な正規表現をわかりやすく表記する 156 電話番号用の正規表現を作る 157 メールアドレス用の正規表現を作る 158 クリップボードのデータから電話番号とメールアドレスを抽出する 3-4 日付データの操作 159 現在の日時を取得する 160 任意の日時データを生成する 161 年、月、日だけのデータを生成する 162 時刻だけのデータを生成する 163 ある時点からの経過日数・時間を取得する 164 ある時点からの経過日数だけを取得する 165 現在から50日前後や1週間前後の日付と時刻を取得する 166 経過時間を測定する 167 日時データを文字列に変換して曜日名を取得する 第4章 ファイルの操作と管理 4-1 ファイル操作 168 現在、作業中のディレクトリを取得する 169 ディレクトリを移動する 170 新規のフォルダーを作成する 171 絶対パスを取得/確認する 172 任意のフォルダー間の相対パスを取得する 173 パスをディレクトリパスとベース名に分けて取得する 174 パスのすべての要素を分解して取得する 175 カレントディレクトリに新規フォルダーを作成する 176 ファイルサイズを調べる 177 フォルダーの内容を調べる 178 パスが正しいかを調べる 4-2 データの保存 179 変数専用ファイルにデータを保管する 180 shelveファイルにデータを追加してデータの一覧を取得する 181 変数を定義コードごと別ファイルに保存する 4-3 globモジュールによるディレクトリの操作 182 指定したパターンにマッチするファイルやディレクトリの名前を取得する 4-4 ファイルの管理 183 ファイルをコピーする 184 フォルダーごとコピーする 185 ファイルを移動する 186 フォルダーを移動する 187 特定の拡張子を持つファイルを完全に削除する 188 フォルダーの中身ごと完全に削除する 189 ファイルやフォルダーを安全に削除する 190 ディレクトリツリーを移動する 191 ZIPファイルで圧縮する 192 作成済みのZIPファイルに任意のファイルを追加する 193 ZIPファイルの情報を取得する 194 ZIPファイルを展開する 195 ZIPファイルの特定のファイルのみを展開する 196 自動バックアッププログラムを作成する 第5章 デバッグ 5-1 例外処理とログの収集 197 例外を発生させる 198 独自の例外を発生させて例外処理を行う 199 エラーの発生位置とそこに至る経緯を確認する 200 エラー発生時のトレースバックをファイルに保存する 201 ソースコードが正常に使われているかチェックする 202 ログを出力する 203 ログレベルをいろいろ変えてみる 204 ログを無効化する 205 ログをファイルに記録する 5-2 デバッグ 206 ステップ実行筐。ステップアウト(VSCode) 207 ステップ実行筐。ステップオーバー(VSCode) 208 ステップ実行筐。ステップイン(VSCode) 209 デバッグビューで情報を得る 210 Spyderでデバッグする 第6章 Excelシートの操作 6-1 ワークシートの操作 211 Excelシートを操作するためのモジュールをインストールする 212 Excelブックを読み込む 213 Excelシートのタイトル一覧を取得する 214 Excelシートを読み込む 215 ワークシートからセルの情報を取得する 216 Cellオブジェクトからセル情報を取得する 217 セル番地を数値で指定する 218 集計表のサイズを取得する 219 セル番地の列の文字と番号を変換する 220 ワークシートの特定の範囲のCellオブジェクトを取得する 6-2 レコード、カラムの操作 221 集計表をデータベースのテーブルとして考える 222 1列のデータを取り出す 223 すべての列のデータを列単位で取り出す 224 1行のレコードを取り出す 225 すべてのデータをレコード単位で取り出す 226 指定したセル範囲のデータを取得する 6-3 ワークブックの作成と編集 227 新規のワークブックを生成する 228 ワークブックを保存する 229 ワークシートを追加する 230 位置と名前を指定して新規ワークシートを追加する 231 ワークシートを削除する 232 セルに値を書き込む 233 データ更新用のアップデータプログラムを作る 234 数式を入力する 235 セルの幅と高さを設定する 236 セルを結合する 237 セルの結合を解除する 238 ウィンドウを固定する 239 レコード単位で書き込む 240 グラフを作成する 第7章 Wordドキュメント 7-1 Wordドキュメントの処理 241 Wordドキュメントを操作するためのモジュールをインストールする 242 Wordドキュメントを読み込む 243 段落を構成する要素を取得する 244 Wordドキュメントからすべてのテキストを取得する 245 テキストのスタイルを設定する 246 新規Wordドキュメントを作成してテキストを入力する 247 Wordドキュメントにテキストを追加する 248 見出しを追加する 249 改ページを入れる 第8章 インターネットアクセス 8-1 Webデータの取得 250 外部モジュール「Requests」を利用してWebに接続する 251 Yahoo! JAPANにアクセスする 252 Webデータがやり取りされる仕組みを理解する 253 レスポンスメッセージからデータを取り出す 8-2 Web APIの利用 254 Web APIで役立つデータを入手する 255 気象データのWebサービス「OpenWeatherMap」を利用する 256 5日間/3時間ごとの気象データを取得するためのURLを作る Column JSONとXML 257 「OpenWeatherMap」から現在の気象データを取得する 258 「OpenWeatherMap」から3時間ごとの天気予報を取得する 259 向こう5日間の12時間ごとの天気予報を教えるプログラムを作る 260 MediaWikiから検索情報を取得する 8-3 Webスクレイピング 261 Webスクレイピングとは Column Webスクレイピングの活用例 262 スクレイピング専用のBeautiful Soup4モジュールをインストールする 263 「Yahoo!ニュース」のRSSをスクレイピングする 第9章 自然言語処理 9-1 テキストの処理 264 同じ文字列かどうかを調べる 265 文字列が含まれるかどうかを調べる 266 指定した文字列で始まっているか、または終わっているかを調べる 267 指定した文字列で始まっていないか、または終わっていないかを調べる 268 文章の冒頭と末尾が一致するかどうかを調べる 269 文章の冒頭または末尾が指定した文字列と一致するかを調べる 9-2 テキストファイルの処理 270 テキストファイルのセンテンスを1つずつ出力する 271 ファイルに保存されたすべてのセンテンスを、末尾の改行を含まずに出力する 272 テキストファイルの空白行をスキップして出力する 273 特定の文字列を含むセンテンスだけを出力する 274 特定の文字列を含むセンテンスがあるかどうかだけを調べる 275 段落ごとに連番をふる 276 文章の中から指定した段落まで抽出して表示する 277 英文を読み込んで単語リストを作る 278 英文を読み込んで重複なしの単語リストを作る 279 単語の出現回数をカウントして頻度表を作る 280 単語の出現回数順に頻度表を並べ替える 281 ファイルのエンコード方式をUTF-8に変換する Column エンコードとデコード 9-3 形態素解析入門 282 形態素解析で文章を品詞に分解する 283 形態素解析モジュール「Janome」の導入 284 「Janome」で形態素解析を実行する 285 形態素解析を行うanalyzerモジュールを作る 286 テキストファイルから1行ずつデータを読み込む 287 OSごとの改行モードの取り扱いを知る 288 文章から名詞を取り出してファイルに蓄積する 289 多重forループからの脱出コードを関数化する 9-4 マルコフモデルによる文章の創出 290 文章のつながり 291 マルコフ連鎖、マルコフモデルとは 292 マルコフ辞書の実装 Column もとになる文章量が少ないと、文章が作れないことがある 9-5 チャットボットの作成 293 チャットボットを作成する 294 入力した文字列に反応するようにする 9-6 形態素解析を利用したテキストマイニング 295 テキストファイルを読み込んで名詞の頻度表を作る 第10章 GUI 10-1 Tkinterライブラリ 296 プログラムの「画面」を作る(Tkinterライブラリ) 297 ウィンドウのサイズを指定する 298 ウィンドウにボタンを配置する 299 ボタンを配置する位置を指定する 300 ボタンを作ってgrid()メソッドで配置する 301 place()メソッドで位置を指定して配置する 302 ボタンがクリックされたときに処理を行う 303 チェックボタンで選択できるようにしよう 304 ラジオボタンを使って1つだけ選択できるようにしよう 305 メニューを配置する 306 メッセージボックスの表示 307 明日の予定を決めてくれるプログラムを作る 10-2 Qt DesignerでGUIを開発 308 PyQt5ライブラリとQt DesignerでGUIアプリを開発! 309 「PyQt5」と「pyqt5-tools」をインストールしよう 310 Qt Designerを起動する 311 メインウィンドウを作成して保存する 312 リストとテキストエディットを配置してプロパティを設定する 313 ラインエディットを配置してプロパティを設定する 314 プログラム実行用のボタンを配置してプロパティを設定する 315 ボタンクリックでプログラムを駆動する仕組みを作る 316 ラベルを配置してプロパティを設定する 317 リソースからイメージを読み込んでウィジェットに表示する 318 メニューを設定する 319 メニューアイテムの選択でプログラムを駆動する仕組みを作る 320 XMLデータをPythonモジュールにコンバートする(コマンドラインツール「pyuic5」) 321 コンバート専用のプログラムを作る 322 リソースファイル(.qrc)をPythonにコンバートする 323 GUIプログラムの起点になるモジュールを作成する 324 応答フレーズを生成する仕組みをプログラムに組み込む Column Qt Designerの公式マニュアル 325 GUIプログラムをダブルクリックで起動できるようにする 第11章 NumPy、Pandas、scikit-learn 11-1 NumPyライブラリを使う 326 NumPyで配列(ベクトル)を作成する 327 ベクトルのスカラー演算 Column ベクトル 328 ベクトルの累乗、平方根を求める 329 ベクトルのサイン、コサイン、タンジェントを求める 330 サイン、コサイン、タンジェントの逆関数を求める 331 ラジアンと度を相互変換する 332 切り捨て、切り上げ、四捨五入を行う 333 平均、分散、最大値、最小値を求める 334 ベクトル同士の四則演算 335 ベクトルの要素同士の積を求める 336 ベクトルの内積を求める 337 多次元配列で行列を表現する 338 行列の基礎知識 339 行列のスカラー演算を行う 340 行列の成分にアクセスする 341 行列の成分を行ごと、列ごとに集計する 342 行列の要素同士を加算、減算する 343 行列の要素同士の積を求める Column 行列の定数倍 344 行列の積を求める 345 ゼロ行列と単位行列の積の法則 346 行と列を入れ替えて転置行列を作る 347 逆行列を求める 11-2 Pandasライブラリ 348 データフレームを作成する 349 データフレームの列を取得する 350 データフレームから行を抽出する 351 データフレームに行を追加する 352 データフレームに列を追加する 353 CSVファイルをデータフレームに読み込む 354 基本統計量を求める 355 基本統計量を一括で求める 11-3 相関分析 356 グラフを描いてデータ間の関連性を知る 357 2つのデータの関係の強さを表す値を求める 11-4 scikit-learn 358 線形単回帰分析とは 359 線形単回帰分析を実行する 360 線形重回帰分析とは 361 重回帰分析にかける変量の相関を調べる 362 売上と相関がある3つの要因から売上額を予測する 363 住宅の販売価格を重回帰分析で予測する 364 住宅の販売価格をサポートベクターマシンで予測する 365 勾配ブースティング決定木回帰で住宅価格を予測する 366 ワインの品質をサポートベクターマシンで分類する 367 ワインの品質をランダムフォレストで分類する 11-5 scikit-learnによるテキストマイニング 368 テキストデータの前処理① Column 日本語の場合はどうする? 369 Bag-of-wordsで前処理してニュース記事を分類する 370 テキストデータの前処理② 371 テキストデータの前処理③ 372 tf-idfで前処理してニュース記事を分類する 373 テキストデータの前処理④ 第12章 Pythonでディープラーニング 12-1 MNISTデータセットの手書き数字をディープラーニング 374 Pythonでディープラーニングとはどういうことなのか 375 ディープラーニングの考え方をすばやく学ぶ 376 ディープラーニング用ライブラリ「TensorFlow」をインストールする 377 手書き数字「MNISTデータセット」の中身を見る 378 MNISTデータセットをMLPに入力できるように前処理する 379 MLPの隠れ層をプログラミングする 380 ドロップアウトを実装する 381 MLPの出力層をプログラミングする 382 バックプロパゲーションを実装する 383 作成したニューラルネットワークの構造を出力する Column MNISTデータの学習結果を評価する 384 MNISTデータをディープラーニングする 12-2 ファッションアイテムの画像認識 385 Fashion-MNISTデータセットを用意する 386 Fashion-MNISTを前処理する 387 Fashion-MNISTをディープラーニングする 12-3 畳み込みニューラルネットワークを利用した画像認識 388 畳み込みニューラルネットワークとは 389 ゼロパディングとは 390 プーリングとは 391 プーリング層を備えたCNNを構築する 392 CNNでFashion-MNISTをディープラーニングする 12-4 一般物体認識のためのディープラーニング 393 カラー画像を10のカテゴリに分類 Column CIFAR-10を公開しているサイト 394 KerasでCIFAR-10をダウンロードする 395 CIFAR-10のCNNをプログラミングする 396 CIFAR-10をディープラーニングする 第13章 Matplotlibによるデータの視覚化 13-1 折れ線グラフの描画 397 「matplotlib.pyplot」をインポートしてグラフを描画する 398 ラインの書式を設定する Column 凡例の表示 399 複数のラインを表示する 13-2 散布図 400 散布図を作成する 401 マーカーのスタイルを設定して2色のダイヤモンド型にする 13-3 棒グラフの描画 402 棒グラフを作成する 403 バーの間の隙間をなくす 404 バーのカラーとエッジラインのスタイルを設定する 405 エラーバーを表示する 13-4 円グラフの描画 406 円グラフを作成する Column フォーマット指定子 407 円グラフの開始角度を90度にして時計回りに表示する 408 円グラフの要素のカラー、エッジラインの幅とカラー、ラベルテキストのカラーを設定する 409 円グラフの特定の要素を切り出して目立たせる 13-5 タイトル、軸ラベルの表示 410 グラフタイトルと軸ラベルを表示する 411 x軸とy軸に独自の目盛ラベルを表示する 13-6 グラフ領域を分割して複数のグラフを出力 412 タテ2段で2つのグラフを表示する 413 ヨコ2段で2つのグラフを表示する 414 4つのマス目に4種類のグラフを表示する 415 グラフエリアのサイズを指定して3種類のグラフをプロットする 416 サブプロットエリアの配置を調整する 13-7 グラフ要素の操作 417 グラフオブジェクトを生成して操作する 418 subplot()で直接Axesオブジェクトを配置する 419 Axes.set()でAxesオブジェクトの外観を設定する 420 サブプロットを配列形式で操作する 421 グリッドのAxesを行ごとに個別のリストにする 422 垂直線と水平線を描画する 423 軸をグラフエリア中心に移動する 424 軸を反転する 425 曲線下の一定の区間面積をPolygonで塗りつぶす 13-8 ヒストグラム 426 正規分布のヒストグラムを作成して確率密度のラインをプロットする 427 異なる幅のビンを並べて自動的に集計し、プロットする 428 複数のデータを1つのヒストグラムにまとめる 13-9 3Dグラフのプロット 429 3Dグラフをプロットする 430 窶廓(x,y)=x2+y2をプロットする 431 2Dデータのヒストグラムを3D化してプロットする 13-10 画像のプロット 432 グレースケールの画像をプロットする 433 PNG形式の画像をプロットする 13-11 Seabornを利用したグラフ作成 434 Seabornを使って散布図を描く 435 Seabornを使って折れ線グラフを描く 第14章 GitとGitHub 14-1 Git 436 Git(ギット)とは 437 Gitのインストール 438 ローカルリポジトリの作成 439 ファイルを作成してコミットする Column ローカルリポジトリの隠しフォルダー Column 仮想環境のPythonインタープリターが選択できないときの対処法 440 ファイルを編集してコミットする 441 変更履歴を確認する 442 コミット前に変更箇所を確認する Column コミット前の変更を破棄する 443 前回のコミットを取り消す 444 複数のファイルをまとめてコミットする 14-2 ブランチの作成 445 ブランチを作成してコミット履歴を枝分かれさせる 446 ブランチにおける差分表示 447 ブランチをマージする 14-3 GitHubとの連携 448 GitHubのリポジトリを作成する 449 GitHubのリポジトリとローカルリポジトリとの連携 450 ローカルリポジトリからリモートにアップロードする 451 リモートリポジトリでの変更を取り込む 索引 サンプルデータについて