Python 実践スクリプト集 30 本
経営情報・経済学の題材に沿って、Python の文法・標準ライブラリ・数値計算を 段階的に学べる実行可能スクリプト 30 本です。各スクリプトには解説ページがあり、 コード全文と実行結果を掲載しています(外部ネットワーク接続は一切不要)。
すべてのスクリプトは PEP 723 の
インラインスクリプトメタデータ(# /// script)を備えており、
uv だけで実行できます。
実行環境
| 項目 | 内容 |
|---|---|
| 実行方法 | uv run <ファイル名>.py — 依存ライブラリは uv が自動導入(事前の pip install 不要) |
| Python | 3.11 以上(match 文、X \| Y 型記法、itertools.pairwise を使用) |
| 外部ライブラリ | NumPy / pandas / SciPy / matplotlib(11 本のみ使用、PEP 723 メタデータに宣言済み) |
| 標準ライブラリだけで動く | 30 本中 19 本(01–08, 11, 13, 14, 16, 22, 23, 25, 26, 27, 28, 29) |
| 動作確認 | uv 0.11.32 / Python 3.12.13 / NumPy 2.5.2 / pandas 3.0.5 / SciPy 1.18.0 / matplotlib 3.11.1 で全 30 本の完走を確認 |
uv run 01_kpi_match.py # 個別に実行
for f in [0-9][0-9]_*.py; do uv run "$f"; done # 一括実行
出力ファイルを作るスクリプト(11, 26, 28, 30)は、実行ディレクトリ直下に
out_11/ のようなフォルダを作成します。
一覧
ファイル名をクリックすると、解説・コード全文・実行結果のページに移動します。
| # | ファイル | テーマ | 主な学習項目 | 依存 | 難易度 |
|---|---|---|---|---|---|
| 1 | 01_kpi_match.py |
部門別KPI(達成率)の評価 | f文字列, 型ヒント, match文(Python 3.10+), enumerate, 内包表記 | — | 基礎 |
| 2 | 02_decimal_tax.py |
消費税の内税・外税と端数処理 | float の誤差, decimal.Decimal, 丸めモード(ROUND_HALF_UP / ROUND_HALF_EVEN) | — | 基礎 |
| 3 | 03_compound_interest.py |
複利計算・実効年利・「72の法則」の検証 | while ループ, math モジュール, 関数の既定引数, 反復計算と閉形式の比較 | — | 基礎 |
| 4 | 04_loan_amortization.py |
住宅ローンの元利均等返済スケジュール | ジェネレータ関数(yield), 名前付きタプル, 集計, 表の整形 | — | 基礎 |
| 5 | 05_npv_irr.py |
投資評価(NPV・IRR・回収期間) | 高階関数, 二分法とニュートン法, 例外処理, 収束判定 | — | 基礎 |
| 6 | 06_cvp_breakeven.py |
CVP分析(損益分岐点・安全余裕率・営業レバレッジ) | dataclass, プロパティ, 逆算(目標利益からの必要数量) | — | 基礎 |
| 7 | 07_market_equilibrium.py |
需要・供給の均衡価格と、従価税の帰着(tax incidence) | 無名関数(lambda), 高階関数, 二分法, 弾力性の数値微分 | — | 基礎 |
| 8 | 08_descriptive_stats.py |
平均・分散・分位点・歪度・尖度を自前実装し標準ライブラリと照合 | sorted, sum, statistics モジュール, 不偏推定量, アサーション | — | 基礎 |
| 9 | 09_ols_simple.py |
最小二乗法(OLS)による広告費と売上の関係の推定 | 数式の実装, t検定, 決定係数, 残差分析, scipy との照合 | sp | 中級 |
| 10 | 10_ols_multiple.py |
賃金関数の推定(教育年数・経験年数・週労働時間) | NumPy の行列演算, 正規方程式, 分散共分散行列, VIF, F検定 | np, sp | 中級 |
| 11 | 11_csv_aggregate.py |
売上CSVの生成・読み込み・集計・書き出し | csv モジュール, with 文, collections(defaultdict/Counter), pathlib, datetime, sorted の key 引数 | — | 中級 |
| 12 | 12_pandas_pivot.py |
売上データのグループ集計・ピボット・時系列リサンプル・移動平均 | DataFrame, groupby/agg, pivot_table, resample, rolling, merge, メソッドチェーン | np, pd | 中級 |
| 13 | 13_gini_lorenz.py |
ジニ係数・ローレンツ曲線・上位シェア・タイル指数 | 累積和, 台形公式による数値積分, 複数指標の比較, テキスト描画 | — | 中級 |
| 14 | 14_market_concentration.py |
市場集中度(HHI・CRk)と合併審査、クールノー競争との関係 | 辞書操作, ソート, 関数の分割, シミュレーション | — | 中級 |
| 15 | 15_eoq_inventory.py |
経済的発注量(EOQ)モデルと安全在庫・発注点 | 最適化の解析解と数値探索の比較, math, 正規分布のパーセント点 | sp | 中級 |
| 16 | 16_queue_mm1.py |
窓口待ち行列 M/M/1 のシミュレーションと理論値の照合 | random モジュール, イベント駆動ループ, 統計量の収集, 理論式との突き合わせ(検証の作法) | — | 中級 |
| 17 | 17_option_montecarlo.py |
ヨーロピアン・コールの価格をモンテカルロ法とBlack-Scholes式で比較 | NumPy のベクトル化, 乱数, 分散減少法(対称変量), 収束の観察 | np, sp | 中級 |
| 18 | 18_random_walk_var.py |
幾何ブラウン運動による株価シミュレーションと VaR / 期待ショートフォール | NumPy の累積積, 分位点, ヒストグラムのテキスト描画, リスク指標の定義 | np | 中級 |
| 19 | 19_bootstrap_test.py |
ブートストラップ信頼区間と並べ替え検定(A/Bテストの評価) | 再標本抽出, ノンパラメトリック推論, p値の意味, 正規近似との比較 | np, sp | 中級 |
| 20 | 20_markov_chain.py |
顧客状態遷移(RFMセグメント)の定常分布・吸収確率・顧客生涯価値 | 行列の冪乗, 固有値問題, 線形方程式の求解, NumPy の線形代数 | np | 中級 |
| 21 | 21_linear_programming.py |
生産計画の線形計画問題と双対価格(シャドープライス) | scipy.optimize.linprog, 制約行列の組み立て, 双対問題の解釈, 感度分析 | np, sp | 上級 |
| 22 | 22_tsp_heuristic.py |
配送ルート最適化(巡回セールスマン問題)を貪欲法+2-opt で解く | 総当たりの計算量, 近傍探索, 局所最適とランダム再スタート, itertools.permutations, 計算時間の計測 | — | 上級 |
| 23 | 23_oop_bank.py |
銀行口座クラス(継承・カプセル化・カスタム例外・単体テスト) | class, 継承, @property, カスタム例外, repr, 特殊メソッド, unittest による自動テスト | — | 上級 |
| 24 | 24_portfolio_optimization.py |
効率的フロンティア・最小分散ポートフォリオ・シャープレシオ最大化 | dataclass, 型ヒント, NumPy 線形代数, scipy.optimize.minimize, 制約付き最適化 | np, sp | 上級 |
| 25 | 25_decorators.py |
実行時間計測・メモ化・リトライ・入力検証をデコレータで実装する | 関数はオブジェクト, クロージャ, functools.wraps / lru_cache, 引数付きデコレータ, スタック(積み重ね) | — | 上級 |
| 26 | 26_generators_stream.py |
大規模ログをメモリに載せずに集計するストリーム処理 | yield, ジェネレータ式, itertools, パイプライン設計, メモリ使用量の比較 | — | 上級 |
| 27 | 27_concurrency.py |
CPU集約タスクとI/O待ちタスクで、スレッドとプロセスの効果を比較 | concurrent.futures, GIL, ThreadPoolExecutor vs ProcessPoolExecutor, as_completed, オーバーヘッドの存在 | — | 上級 |
| 28 | 28_sqlite_db.py |
SQLite で売上データベースを構築し SQL で分析する | sqlite3, DDL/DML, 外部キー, インデックス, トランザクション, JOIN・GROUP BY・ウィンドウ関数, プレースホルダ(SQLインジェクション対策) | — | 上級 |
| 29 | 29_text_tfidf.py |
文書集合から TF-IDF を自前実装し、特徴語抽出と文書類似度を求める | re モジュール, collections.Counter, 集合演算, コサイン類似度, 辞書内包表記 | — | 上級 |
| 30 | 30_visualization.py |
経済時系列の可視化(推移・散布図と回帰直線・分布・ローレンツ曲線) | matplotlib のオブジェクト指向API, subplots, 軸の設定, 注釈, PNGファイルへの保存, 日本語フォントが無い環境での対処 | plt, np | 上級 |
凡例 — 依存: np=NumPy, pd=pandas, sp=SciPy, plt=matplotlib, —=標準ライブラリのみ
難易度の目安 — 基礎(01–08): 文法・数値・標準ライブラリ / 中級(09–20): 統計・データ処理・シミュレーション / 上級(21–30): 最適化・設計・並行処理・DB・可視化