1
/
の
0
- 発売日:20240912
- 出版社:技術評論社
- ISBN/JAN:9784297144012
通常価格
3,520 円(税込)
通常価格
セール価格
3,200 円
単価
/
あたり
商品説明
『WEB+DB PRESS』の人気連載が待望の書籍化です。Webシステム開発から機械学習・データ分析まで、現場で使えるPythonのノウハウが1冊にまとまっています。取り上げる話題は、環境構築、コード品質、テスト、構造化ログ、リリース管理、Django、Django REST framework、GraphQL、Fast API、Django ORM、データサイエンスプログラムの品質、データ分析レポート、pandasのパフォーマンス改善、JanomeとSudachiPyによる日本語処理、pandasやNumPyによるテスト、数理最適化などなど。今日から仕事で活かせるヒントやテクニックがきっと見つかるです。
目次
はじめに
■■第1部 基礎編
■第1章 最新Python環境構築シンプルでコーディングしやすい環境を整える
1.1 Pythonのインストール
インストール方法のお勧めは?
インストーラでの導入──簡易的な導入手段
仮想環境と標準モジュールのvenv
仮想環境の切り替え──activate/deactivate
Dockerイメージ──複数人開発でより扱いやすい方法
1.2 ライブラリのインストール
とりあえず何を使えばよい?
pip──標準かつ簡単な方法
Poetry──より安全に管理するなら
1.3 コーディング環境を整える
とりあえずどこまでやるべき?──最低限の品質保証
PEP 8──コーディング規約
black──PEP 8の自動適用
ruff──高速なインポート順の整列とPEP 8のチェック
1.4 漸進的型付けと静的型チェック
どこまで対応すればよいか?──とりあえずType Hintingを書く
漸進的型付け──あとから型を付けられる
Type Hinting
mypy──型のチェック
1.5 開発支援ツールを一括実行──tox
toxのインストール方法
toxの設定例
toxの実行と実行結果
toxのテストを個別で実行
■第2章 型ヒントとmypyによるコード品質の向上型チェックの基本から、既存コードの改善プロセスまで
2.1 型ヒントの役割と型チェッカーの活用
型ヒントがある場合・ない場合
型ヒントを活用する方法
2.2 型ヒントの使い方──基本編
変数
関数
ジェネリック型
複雑な型
クラス
型エイリアス
2.3 型ヒントの使い方──発展編
dataclassesモジュールを活用する
アノテーションによる実行時のエラー回避
スタブファイルを利用する
既存のコードベースに型ヒントを追加する
■第3章 pytestを使って品質の高いテストを書くparametrize・フィクスチャ・pytest-covの活用
3.1 テストの品質向上のポイント
テストコードとプロダクトコードの違い
テストコードを書くときに必要な考え方
3.2 pytestによるテストの書き方
テストケースの書き方
テストケースの基本形
3.3 pytestでテストを書くときに押さえるべき基本
1つのテストケースでは1つのことを調べる
テスト対象のインポートはテスト関数内で行う
3.4 サンプルコードのテストを作成しよう
ディレクトリ構成とテスト対象の概要
開発環境のセットアップ
素朴なテストを書く
3.5 pytestを使いこなしてテストコードを改善しよう
parametrizeを使って繰り返すテストを書こう
フィクスチャを使って共通処理をまとめよう
フィクスチャの機能を適度に使いこなす
3.6 テストの品質をチェックしよう
pytest-covを使ってカバレッジをチェックしよう
テストコードをレビューするときのコツ
■第4章 structlogで効率的に構造化ログを出力横断的に検索や解析のしやすいログのしくみを整えよう
4.1 ログはなぜ必要なのか
4.2 構造化ログはなぜ便利なのか
4.3 Python標準モジュールのみで構造化ログを実現しよう
基本的なログ出力
loggingモジュールで構造化ログを出力する
シンプルに構造化ログを実装した際の問題点
4.4 structlogでより便利に構造化ログを出力しよう
structlogを導入して利用する
JSON形式で構造化ログを出力する
データバインディングして情報を追跡しやすくする
4.5 django-structlogでリクエストとレスポンスログを拡張しよう
4.6 ログを活用する
CloudWatch Logs Insightsでログを横断的に検索する
■第5章 リリースを管理して開発効率を高めるtowncrierとGitHub Actionsによるリリースの自動化
5.1 リリースを管理しよう
リリースを管理しないと発生する困りごと
リリースを管理すると解決できること
5.2 リリースを管理する方法
Changelogを手動で作成する
towncrierでChangelogを自動更新する
5.3 GitHub Actionsでリリースを自動化する
GitHub Actionsとは
リリース作業を自動化するworkflowを作成する
workflowを実行する
workflowで作成したChangelog、Gitタグ、GitHubのリリースを確認する
■■第2部 Webシステム開発編
■第6章 Djangoアプリケーションの品質を高める単体テストと運用時の監視
6.1 Djangoとアプリケーション品質
Django──フルスタックWebアプリケーションフレームワーク
アプリケーションの品質
6.2 サンプルアプリケーションの作成
仕様
実装
6.3 標準モジュールを使った単体テスト
実装
実行
単体テストを作成するための標準モジュール
6.4 単体テストを効率化するライブラリ
pytest──高機能な単体テストフレームワーク
unittest.mock──外部システム通信や複雑な処理をモック化
freezegun──単体テスト実行時の時刻を簡単に指定
factory-boy──モデルのデータ作成を効率化
6.5 運用に役立つロギングと監視
Python標準のロギングモジュールを活用
Sentryで監視をより効果的に
■第7章 DjangoでAPI開発初めてのDjango REST framework
7.1 Django REST framework(DRF)とは
DjangoとDRFの違い
DRFのインストール方法
7.2 サンプルアプリケーションの準備
DRFの準備
DBの準備
7.3 シリアライザ
シリアライザの作成方法
デシリアライズ
バリデーションの詳細
バリデーション済みデータのDBへの登録/更新
シリアライズ
7.4 APIビュー
シンプルなAPIビュー
ジェネリックAPIビュー
ビューセット
■第8章 Django×StrawberryによるGraphQL入門GraphQLの基礎から実際のプロダクトへの導入まで
8.1 GraphQL──自由で過不足の少ないAPI
GraphQLのメリット
GraphQLのスキーマを知る
8.2 Strawberryとは
8.3 Django×StrawberryでGraphQLサーバを立ち上げてみよう
必要なパッケージをインストールしよう
GraphQLサーバを立ち上げよう
8.4 ミューテーションの実装──カテゴリ登録APIの実装
入力型とミューテーションを実装する
ミューテーションをスキーマに追加する
8.5 子ノードと子孫ノードを取得しよう──リゾルバチェインズ
リゾルバ関数
リゾルバチェインズ
リゾルバチェインズによる子ノードと子孫ノードの取得の実装例
リゾルバ関数とビジネスロジックは分けよう
リゾルバチェインズの柔軟性の代償としてのN+1問題
8.6 N+1問題とどう向き合うか──データローダパターン
N+1問題とは
GraphQLではなぜN+1問題が発生しがちなのか
データローダパターンを使う
データローダの実装方法
データローダの制約
8.7 エラー対応──開発者用のエラーとユーザー用のエラーを使い分ける
一般APIエラー対応
開発者用エラーの返し方
ユーザー用エラーの返し方
8.8 GraphQLにおけるユニットテストの考え方
GraphQLエンジンはテスト重要度もテスト容易性も低い
リゾルバ関数はテスト重要度が低い
ビジネスロジックをテストしよう
GraphQLをテストしたい場合
■第9章 FastAPIによるWeb API開発型ヒントを活用したAPI仕様中心の開発手法
9.1 FastAPIの特徴
9.2 FastAPIの開発環境をセットアップしよう
最小限のプロジェクトを作成しよう
最小限のプロジェクトの動作を確認しよう
9.3 API仕様とモックを作成しよう
FastAPIによる開発の一般的な構成を理解しよう
API仕様を決めてエンドポイントと入出力を設計しよう
スキーマを定義しよう
ルータを定義しよう
生成されたドキュメントとAPIの動作を確認しよう
9.4 DBに接続する処理を追加し、API実装を完成させよう
DB接続に必要なライブラリをセットアップしよう
DBに接続するDependencyを作成しよう
CRUD処理を実装しよう
path operation関数を完成させよう
APIの動作を確認しよう
9.5 バリデーションとエラー処理を追加しよう
スキーマにバリデーションを追加しよう
ルータにバリデーションを追加しよう
HTTPException例外を使って400番台のエラーを返そう
9.6 FastAPIの強み
■第10章 Django ORMの速度改善クエリ発行の基礎、計測、チューニング
10.1 作成するサンプルアプリケーション
Djangoアプリケーションの作成
ダミーデータの投入
10.2 DjangoアプリケーションのSQL発行ログの確認
簡易的にクエリを調べる
ライブラリを使い、画面上で俯瞰して確認する──Silk
10.3 Django ORMのクエリ発行タイミング
クエリ発行タイミングの原則──遅延実行
クエリ発行が遅延される場合(d1) ──filterメソッドのチェイン
クエリ発行が遅延される場合(d2)──リレーション先のオブジェクトの取得
10.4 親子モデルの情報の取得を改善する
実行時間の計測──デコレータで特定ビューの実行時間を計測する
子から親の情報参照──select_relatedメソッド
親から子の情報参照──prefetch_relatedメソッド
10.5 大量レコードの作成・更新を改善する
大量レコードの作成──bulk_createメソッド
大量レコードの更新──bulk_updateメソッド
■第11章 Django ORMトラブルシューティングORMにまつわる問題を解決するための型を身に付けよう
11.1 ORM利用の3つの基本
11.2 SQLを確認する
問題のあるORMクエリ例
Django ORMのログ出力設定
ログは現状を映す鏡
11.3 意図しないタイミングでのSQL発行を避ける
PythonスクリプトでDjango ORMを実行
コードを集めて処理の要点を押さえる
11.4 理想のSQLからORMを組む
SQLを整形表示する治具を作る
理想のSQLを考える
現実的な時間で開発を進める
■■第3部 機械学習・データ分析編
■第12章 データサイエンスプログラムの品質改善5つのステップで製品レベルの品質へ
12.1 PoCフェーズのあとに必要なこと
架空のシナリオについて
品質向上のための5つのステップ
12.2 ステップ1:単体コマンドとして実行できるようにする
一般的なディレクトリ構成にする
実行可能コマンドを作成する
仮想環境を作成し、ライブラリを導入する
フォーマッター、静的チェックを実行
プログラムを実行する
12.3 ステップ2:回帰テストを行えるようにする
回帰テスト導入のために最低限の修正をする
pytest-snapshotを使用して回帰テストを実現する
回帰テストを実行する
12.4 ステップ3:パフォーマンス対策をできるようにする
プロファイラを導入する
Line Profilerで実行時間を計測する
Memory Profilerでメモリ使用量を計測する
実行速度改善のテクニック
プログラムを書き換えたらプロファイラを再実行しよう
12.5 ステップ4:コードの可読性を向上する
処理を関数に分割して可読性を向上する
12.6 ステップ5:コードの保守性を向上する
12.7 まとめ──限られた時間で最大の効果を
■第13章 データ分析レポートの作成JupyterLab+pandas+Plotlyでインタラクティブに
13.1 環境構築
サンプルデータ
13.2 表にスタイルを適用する──pandasのStyling機能
pandasのインポートとサンプルデータの読み込み
DataFrameのStyling機能とは
セルの値を棒グラフで表現する
条件付き書式でセルの背景色を変更する
1つのDataFrameに複数のスタイルを適用する
条件付き書式で行の背景色を変更する
すべてのスタイル変更をまとめる
13.3 動的なグラフを描画する──Plotly Express
13.4 レポートを出力する──ノートブックのHTML化
■第14章 pandasを使った処理を遅くしないテクニック4つの視点でパフォーマンス改善
14.1 なぜpandasによるデータ処理が遅くなってしまうのか
14.2 遅い機能を使わないようにしよう
iterrowsの使用は避けよう
DataFrameのapplyメソッドはあまり速くないことを知ろう
14.3 「Pythonの遅さ」に対処しよう
Pythonがどれくらい遅いのかを知ろう
なるべく列をまとめて計算しよう
loc、where、maskを活用してPythonでの分岐を減らそう
14.4 アルゴリズムやデータ構造の効率化を考えよう
groupbyを使って多重ループを回避しよう
カテゴリ型を使おう
14.5 マルチコアCPUを使い切ろう
時間がかかる処理はマルチコアを使い切れているか確認しよう
マルチコアを使い切る方法を知ろう
pandarallelでapplyを並列化しよう
14.6 まとめ──チューニングは必要になってから
■第15章 JanomeとSudachiPyによる日本語処理フリガナプログラム作成で学ぶ自然言語処理の流れ
15.1 日本語の処理とは
形態素解析とは
品詞、原形、読み
漢字の読みの難しさ
形態素解析の用途
文章にフリガナを振る
15.2 Janomeで形態素解析
Janomeとは
Janomeをインストールして使ってみる
Janomeでフリガナを振る
辞書をカスタマイズする
15.3 SudachiPyで形態素解析
SudachiPyとは
SudachiPyをインストールして使ってみる
SudachiPyでフリガナを振る
さらにフリガナ処理を改善する
ユーザー辞書をカスタマイズする
ユーザー辞書のコストを調整する
フリガナの漢字レベル対応
■第16章 データサイエンスのためのテスト入門pandasやNumPyのテスト機能を使って快適に実験
16.1 データサイエンスにおけるテスト
ソフトウェア開発におけるテストとの違い
テスト導入のステップ
16.2 仮想環境の作成
16.3 assert文による簡単なチェック
目視確認からassert文へ
assert文でチェックする内容とタイミング
16.4 pandasのテスト機能──pandas.testingモジュール
DataFrameの比較──assert_frame_equal()
Seriesの比較──assert_series_equal()
16.5 NumPyのテスト機能──numpy.testingモジュール
NumPy配列の比較──assert_array_equal()
浮動小数点数を持つNumPy配列の比較──assert_allclose()
16.6 Pythonモジュールに切り出し、pytestでテストの実行を自動化
テストに向いているコード
pytestによるテスト
■第17章 Pythonで始める数理最適化看護師のスケジュール作成で基本をマスター
17.1 数理最適化とは──数理モデルによる最適化
数理モデルの構成要素
数理モデルの解き方──ソルバー
17.2 ライブラリを使った数理モデルの作成
化学製品の問題の数理モデル
Python-MIPのメソッドやプロパティ
17.3 数理最適化で看護師のスケジュールを作成
スケジュール作成の課題
問題──看護師のスケジュール作成
変数、目的関数、制約条件
希望シフトのデータの準備と変数表の作成
Pythonによる数理モデルの作成
17.4 StreamlitによるWebアプリケーション化
Streamlitとは
Streamlitを組み込む
索引
■■第1部 基礎編
■第1章 最新Python環境構築シンプルでコーディングしやすい環境を整える
1.1 Pythonのインストール
インストール方法のお勧めは?
インストーラでの導入──簡易的な導入手段
仮想環境と標準モジュールのvenv
仮想環境の切り替え──activate/deactivate
Dockerイメージ──複数人開発でより扱いやすい方法
1.2 ライブラリのインストール
とりあえず何を使えばよい?
pip──標準かつ簡単な方法
Poetry──より安全に管理するなら
1.3 コーディング環境を整える
とりあえずどこまでやるべき?──最低限の品質保証
PEP 8──コーディング規約
black──PEP 8の自動適用
ruff──高速なインポート順の整列とPEP 8のチェック
1.4 漸進的型付けと静的型チェック
どこまで対応すればよいか?──とりあえずType Hintingを書く
漸進的型付け──あとから型を付けられる
Type Hinting
mypy──型のチェック
1.5 開発支援ツールを一括実行──tox
toxのインストール方法
toxの設定例
toxの実行と実行結果
toxのテストを個別で実行
■第2章 型ヒントとmypyによるコード品質の向上型チェックの基本から、既存コードの改善プロセスまで
2.1 型ヒントの役割と型チェッカーの活用
型ヒントがある場合・ない場合
型ヒントを活用する方法
2.2 型ヒントの使い方──基本編
変数
関数
ジェネリック型
複雑な型
クラス
型エイリアス
2.3 型ヒントの使い方──発展編
dataclassesモジュールを活用する
アノテーションによる実行時のエラー回避
スタブファイルを利用する
既存のコードベースに型ヒントを追加する
■第3章 pytestを使って品質の高いテストを書くparametrize・フィクスチャ・pytest-covの活用
3.1 テストの品質向上のポイント
テストコードとプロダクトコードの違い
テストコードを書くときに必要な考え方
3.2 pytestによるテストの書き方
テストケースの書き方
テストケースの基本形
3.3 pytestでテストを書くときに押さえるべき基本
1つのテストケースでは1つのことを調べる
テスト対象のインポートはテスト関数内で行う
3.4 サンプルコードのテストを作成しよう
ディレクトリ構成とテスト対象の概要
開発環境のセットアップ
素朴なテストを書く
3.5 pytestを使いこなしてテストコードを改善しよう
parametrizeを使って繰り返すテストを書こう
フィクスチャを使って共通処理をまとめよう
フィクスチャの機能を適度に使いこなす
3.6 テストの品質をチェックしよう
pytest-covを使ってカバレッジをチェックしよう
テストコードをレビューするときのコツ
■第4章 structlogで効率的に構造化ログを出力横断的に検索や解析のしやすいログのしくみを整えよう
4.1 ログはなぜ必要なのか
4.2 構造化ログはなぜ便利なのか
4.3 Python標準モジュールのみで構造化ログを実現しよう
基本的なログ出力
loggingモジュールで構造化ログを出力する
シンプルに構造化ログを実装した際の問題点
4.4 structlogでより便利に構造化ログを出力しよう
structlogを導入して利用する
JSON形式で構造化ログを出力する
データバインディングして情報を追跡しやすくする
4.5 django-structlogでリクエストとレスポンスログを拡張しよう
4.6 ログを活用する
CloudWatch Logs Insightsでログを横断的に検索する
■第5章 リリースを管理して開発効率を高めるtowncrierとGitHub Actionsによるリリースの自動化
5.1 リリースを管理しよう
リリースを管理しないと発生する困りごと
リリースを管理すると解決できること
5.2 リリースを管理する方法
Changelogを手動で作成する
towncrierでChangelogを自動更新する
5.3 GitHub Actionsでリリースを自動化する
GitHub Actionsとは
リリース作業を自動化するworkflowを作成する
workflowを実行する
workflowで作成したChangelog、Gitタグ、GitHubのリリースを確認する
■■第2部 Webシステム開発編
■第6章 Djangoアプリケーションの品質を高める単体テストと運用時の監視
6.1 Djangoとアプリケーション品質
Django──フルスタックWebアプリケーションフレームワーク
アプリケーションの品質
6.2 サンプルアプリケーションの作成
仕様
実装
6.3 標準モジュールを使った単体テスト
実装
実行
単体テストを作成するための標準モジュール
6.4 単体テストを効率化するライブラリ
pytest──高機能な単体テストフレームワーク
unittest.mock──外部システム通信や複雑な処理をモック化
freezegun──単体テスト実行時の時刻を簡単に指定
factory-boy──モデルのデータ作成を効率化
6.5 運用に役立つロギングと監視
Python標準のロギングモジュールを活用
Sentryで監視をより効果的に
■第7章 DjangoでAPI開発初めてのDjango REST framework
7.1 Django REST framework(DRF)とは
DjangoとDRFの違い
DRFのインストール方法
7.2 サンプルアプリケーションの準備
DRFの準備
DBの準備
7.3 シリアライザ
シリアライザの作成方法
デシリアライズ
バリデーションの詳細
バリデーション済みデータのDBへの登録/更新
シリアライズ
7.4 APIビュー
シンプルなAPIビュー
ジェネリックAPIビュー
ビューセット
■第8章 Django×StrawberryによるGraphQL入門GraphQLの基礎から実際のプロダクトへの導入まで
8.1 GraphQL──自由で過不足の少ないAPI
GraphQLのメリット
GraphQLのスキーマを知る
8.2 Strawberryとは
8.3 Django×StrawberryでGraphQLサーバを立ち上げてみよう
必要なパッケージをインストールしよう
GraphQLサーバを立ち上げよう
8.4 ミューテーションの実装──カテゴリ登録APIの実装
入力型とミューテーションを実装する
ミューテーションをスキーマに追加する
8.5 子ノードと子孫ノードを取得しよう──リゾルバチェインズ
リゾルバ関数
リゾルバチェインズ
リゾルバチェインズによる子ノードと子孫ノードの取得の実装例
リゾルバ関数とビジネスロジックは分けよう
リゾルバチェインズの柔軟性の代償としてのN+1問題
8.6 N+1問題とどう向き合うか──データローダパターン
N+1問題とは
GraphQLではなぜN+1問題が発生しがちなのか
データローダパターンを使う
データローダの実装方法
データローダの制約
8.7 エラー対応──開発者用のエラーとユーザー用のエラーを使い分ける
一般APIエラー対応
開発者用エラーの返し方
ユーザー用エラーの返し方
8.8 GraphQLにおけるユニットテストの考え方
GraphQLエンジンはテスト重要度もテスト容易性も低い
リゾルバ関数はテスト重要度が低い
ビジネスロジックをテストしよう
GraphQLをテストしたい場合
■第9章 FastAPIによるWeb API開発型ヒントを活用したAPI仕様中心の開発手法
9.1 FastAPIの特徴
9.2 FastAPIの開発環境をセットアップしよう
最小限のプロジェクトを作成しよう
最小限のプロジェクトの動作を確認しよう
9.3 API仕様とモックを作成しよう
FastAPIによる開発の一般的な構成を理解しよう
API仕様を決めてエンドポイントと入出力を設計しよう
スキーマを定義しよう
ルータを定義しよう
生成されたドキュメントとAPIの動作を確認しよう
9.4 DBに接続する処理を追加し、API実装を完成させよう
DB接続に必要なライブラリをセットアップしよう
DBに接続するDependencyを作成しよう
CRUD処理を実装しよう
path operation関数を完成させよう
APIの動作を確認しよう
9.5 バリデーションとエラー処理を追加しよう
スキーマにバリデーションを追加しよう
ルータにバリデーションを追加しよう
HTTPException例外を使って400番台のエラーを返そう
9.6 FastAPIの強み
■第10章 Django ORMの速度改善クエリ発行の基礎、計測、チューニング
10.1 作成するサンプルアプリケーション
Djangoアプリケーションの作成
ダミーデータの投入
10.2 DjangoアプリケーションのSQL発行ログの確認
簡易的にクエリを調べる
ライブラリを使い、画面上で俯瞰して確認する──Silk
10.3 Django ORMのクエリ発行タイミング
クエリ発行タイミングの原則──遅延実行
クエリ発行が遅延される場合(d1) ──filterメソッドのチェイン
クエリ発行が遅延される場合(d2)──リレーション先のオブジェクトの取得
10.4 親子モデルの情報の取得を改善する
実行時間の計測──デコレータで特定ビューの実行時間を計測する
子から親の情報参照──select_relatedメソッド
親から子の情報参照──prefetch_relatedメソッド
10.5 大量レコードの作成・更新を改善する
大量レコードの作成──bulk_createメソッド
大量レコードの更新──bulk_updateメソッド
■第11章 Django ORMトラブルシューティングORMにまつわる問題を解決するための型を身に付けよう
11.1 ORM利用の3つの基本
11.2 SQLを確認する
問題のあるORMクエリ例
Django ORMのログ出力設定
ログは現状を映す鏡
11.3 意図しないタイミングでのSQL発行を避ける
PythonスクリプトでDjango ORMを実行
コードを集めて処理の要点を押さえる
11.4 理想のSQLからORMを組む
SQLを整形表示する治具を作る
理想のSQLを考える
現実的な時間で開発を進める
■■第3部 機械学習・データ分析編
■第12章 データサイエンスプログラムの品質改善5つのステップで製品レベルの品質へ
12.1 PoCフェーズのあとに必要なこと
架空のシナリオについて
品質向上のための5つのステップ
12.2 ステップ1:単体コマンドとして実行できるようにする
一般的なディレクトリ構成にする
実行可能コマンドを作成する
仮想環境を作成し、ライブラリを導入する
フォーマッター、静的チェックを実行
プログラムを実行する
12.3 ステップ2:回帰テストを行えるようにする
回帰テスト導入のために最低限の修正をする
pytest-snapshotを使用して回帰テストを実現する
回帰テストを実行する
12.4 ステップ3:パフォーマンス対策をできるようにする
プロファイラを導入する
Line Profilerで実行時間を計測する
Memory Profilerでメモリ使用量を計測する
実行速度改善のテクニック
プログラムを書き換えたらプロファイラを再実行しよう
12.5 ステップ4:コードの可読性を向上する
処理を関数に分割して可読性を向上する
12.6 ステップ5:コードの保守性を向上する
12.7 まとめ──限られた時間で最大の効果を
■第13章 データ分析レポートの作成JupyterLab+pandas+Plotlyでインタラクティブに
13.1 環境構築
サンプルデータ
13.2 表にスタイルを適用する──pandasのStyling機能
pandasのインポートとサンプルデータの読み込み
DataFrameのStyling機能とは
セルの値を棒グラフで表現する
条件付き書式でセルの背景色を変更する
1つのDataFrameに複数のスタイルを適用する
条件付き書式で行の背景色を変更する
すべてのスタイル変更をまとめる
13.3 動的なグラフを描画する──Plotly Express
13.4 レポートを出力する──ノートブックのHTML化
■第14章 pandasを使った処理を遅くしないテクニック4つの視点でパフォーマンス改善
14.1 なぜpandasによるデータ処理が遅くなってしまうのか
14.2 遅い機能を使わないようにしよう
iterrowsの使用は避けよう
DataFrameのapplyメソッドはあまり速くないことを知ろう
14.3 「Pythonの遅さ」に対処しよう
Pythonがどれくらい遅いのかを知ろう
なるべく列をまとめて計算しよう
loc、where、maskを活用してPythonでの分岐を減らそう
14.4 アルゴリズムやデータ構造の効率化を考えよう
groupbyを使って多重ループを回避しよう
カテゴリ型を使おう
14.5 マルチコアCPUを使い切ろう
時間がかかる処理はマルチコアを使い切れているか確認しよう
マルチコアを使い切る方法を知ろう
pandarallelでapplyを並列化しよう
14.6 まとめ──チューニングは必要になってから
■第15章 JanomeとSudachiPyによる日本語処理フリガナプログラム作成で学ぶ自然言語処理の流れ
15.1 日本語の処理とは
形態素解析とは
品詞、原形、読み
漢字の読みの難しさ
形態素解析の用途
文章にフリガナを振る
15.2 Janomeで形態素解析
Janomeとは
Janomeをインストールして使ってみる
Janomeでフリガナを振る
辞書をカスタマイズする
15.3 SudachiPyで形態素解析
SudachiPyとは
SudachiPyをインストールして使ってみる
SudachiPyでフリガナを振る
さらにフリガナ処理を改善する
ユーザー辞書をカスタマイズする
ユーザー辞書のコストを調整する
フリガナの漢字レベル対応
■第16章 データサイエンスのためのテスト入門pandasやNumPyのテスト機能を使って快適に実験
16.1 データサイエンスにおけるテスト
ソフトウェア開発におけるテストとの違い
テスト導入のステップ
16.2 仮想環境の作成
16.3 assert文による簡単なチェック
目視確認からassert文へ
assert文でチェックする内容とタイミング
16.4 pandasのテスト機能──pandas.testingモジュール
DataFrameの比較──assert_frame_equal()
Seriesの比較──assert_series_equal()
16.5 NumPyのテスト機能──numpy.testingモジュール
NumPy配列の比較──assert_array_equal()
浮動小数点数を持つNumPy配列の比較──assert_allclose()
16.6 Pythonモジュールに切り出し、pytestでテストの実行を自動化
テストに向いているコード
pytestによるテスト
■第17章 Pythonで始める数理最適化看護師のスケジュール作成で基本をマスター
17.1 数理最適化とは──数理モデルによる最適化
数理モデルの構成要素
数理モデルの解き方──ソルバー
17.2 ライブラリを使った数理モデルの作成
化学製品の問題の数理モデル
Python-MIPのメソッドやプロパティ
17.3 数理最適化で看護師のスケジュールを作成
スケジュール作成の課題
問題──看護師のスケジュール作成
変数、目的関数、制約条件
希望シフトのデータの準備と変数表の作成
Pythonによる数理モデルの作成
17.4 StreamlitによるWebアプリケーション化
Streamlitとは
Streamlitを組み込む
索引
- 発売日:20240912
- 出版社:技術評論社
- ISBN/JAN:9784297144012
![Product Image](https://image.maruzenjunkudo.co.jp/item/1/324/3348/2336/33482336_01.jpg)