書き方を、
1ページで見返す。

「やりたいこと」から探せる早見表です。覚えるためのものではなく、思い出すためのものです。各項目の「Lesson 番号」のリンクから、くわしい説明のレッスンに戻れます。 コードの中の df は pandas の表、pd は pandas、np は numpy のことです。

CHAPTER 1書き方を一段上げる

  • 条件に合うものだけでリストを作る

    [s for s in sales if s >= 300000]
    Lesson 01
  • 全部を変換したリストを作る

    [s // 10000 for s in sales]
    Lesson 01
  • 条件で2通りに分ける

    ["達成" if s >= 300000 else "未達" for s in sales]
    Lesson 01
  • 金額に桁区切りを付ける

    f"{amount:,}円"   # 1,234,567円
    Lesson 02
  • ゼロ埋め・桁そろえ・パーセント

    f"{n:05d}"   f"{text:>10}"   f"{rate:.1%}"
    Lesson 02
  • 全角・半角をそろえる

    import unicodedata
    unicodedata.normalize("NFKC", text)
    Lesson 02
  • 文字を日付にする/日付を文字にする

    from datetime import datetime
    d = datetime.strptime("2025-09-30", "%Y-%m-%d").date()
    d.strftime("%Y年%m月%d日")
    Lesson 03
  • 日数の差を出す

    (date2 - date1).days
    Lesson 03
  • 月末の日を出す

    import calendar
    calendar.monthrange(2025, 2)[1]   # 28
    Lesson 03
  • 端数を切り捨てる(お金)

    from decimal import Decimal, ROUND_DOWN
    Decimal("1234.5").quantize(Decimal("1"), rounding=ROUND_DOWN)
    Lesson 04
  • 金額の大きい順に並べる

    sorted(rows, key=lambda r: r["金額"], reverse=True)
    Lesson 05
  • 2つのリストを組み合わせる/番号を付ける

    zip(names, amounts)
    enumerate(items, start=1)
    Lesson 05

CHAPTER 2データ構造を使いこなす

  • 出現回数を数える

    from collections import Counter
    Counter(items).most_common(3)
    Lesson 06
  • ないキーでも止まらず、既定値を返す

    totals.get(key, 0)
    Lesson 06
  • キーごとに足し込む

    from collections import defaultdict
    totals = defaultdict(int)
    totals[key] += amount
    Lesson 06
  • 2つの一覧の差・共通部分

    set(billed) - set(paid)   # 差
    set(a) & set(b)           # 共通
    Lesson 07
  • 入れ子のデータから取り出す

    order["customer"]["name"]
    order.get("memo")
    Lesson 08

CHAPTER 3エラーに強いコード

  • エラーが出ても止まらない

    try:
        n = int(text)
    except ValueError:
        n = None
    Lesson 09
  • 自分でエラーを出す

    if amount < 0:
        raise ValueError("金額がマイナスです")
    Lesson 10
  • 途中の値を確かめる

    print(repr(x), type(x))
    Lesson 11
  • ログを残す

    import logging
    logging.basicConfig(level=logging.INFO)
    logging.warning("金額が空欄です")
    Lesson 12

CHAPTER 4コードを整理して育てる

  • 初期値つきの関数と説明文

    def add_tax(price, rate=0.10):
        """税込み金額を返す"""
        return price + price * rate
    Lesson 13
  • 別のファイルの関数を使う

    from tools import add_tax
    Lesson 14
  • 直接実行されたときだけ動かす

    if __name__ == "__main__":
        main()
    Lesson 14
  • データ用のクラスを短く作る

    from dataclasses import dataclass
    
    @dataclass
    class Line:
        code: str
        amount: int
    Lesson 16

CHAPTER 5ファイルとテキストの実践

  • フォルダの中のファイルを探す

    from pathlib import Path
    for p in Path("invoices").glob("*.txt"):
        print(p.stem)
    Lesson 18
  • Excelで文字化けしないCSVを書く

    open("out.csv", "w", newline="", encoding="utf-8-sig")
    Lesson 19
  • JSONを読みやすく書き出す

    json.dumps(data, ensure_ascii=False, indent=2)
    Lesson 19
  • 文章から請求番号を取り出す

    import re
    re.search(r"INV-\d{4}-\d{4}", text)
    Lesson 20
  • ファイルを1行ずつ流して処理する

    with open("app.log", encoding="utf-8") as f:
        errors = (line for line in f if "ERROR" in line)
    Lesson 21

CHAPTER 6pandas を一歩進める

  • 文字を数値にする(変換できないものは空欄に)

    pd.to_numeric(df["金額"], errors="coerce")
    Lesson 22
  • 欠損の数を確認する

    df.isna().sum()
    Lesson 22
  • 表と表を結合する(VLOOKUPの代わり)

    pd.merge(sales, customers, on="得意先コード", how="left")
    Lesson 23
  • クロス集計(ピボットテーブル)

    df.pivot_table(index="地域", columns="商品名", values="金額", aggfunc="sum")
    Lesson 24
  • 月ごとに集計する

    df.groupby(df["日付"].dt.to_period("M"))["金額"].sum()
    Lesson 25
  • 条件で値を入れ分ける(IFの代わり)

    np.where(df["金額"] >= 100000, "高額", "通常")
    Lesson 26
  • 複数シートのExcelを書き出す

    with pd.ExcelWriter("report.xlsx") as w:
        summary.to_excel(w, sheet_name="集計", index=False)
    Lesson 27

CHAPTER 7品質を守る

  • 答えを確かめる

    assert add_tax(1000) == 1100
    Lesson 28
  • 本番の前に、何が起きるかだけ表示する

    if DRY_RUN:
        print(f"{old} -> {new}")
    else:
        old.rename(new)
    Lesson 29

CHAPTER 8仕事で使える形にする

  • 仮想環境を作って有効にする(Windows)

    python -m venv .venv
    .venv\Scripts\activate
    Lesson 30
  • 必要な道具を入れる/書き出す

    pip install pandas openpyxl
    pip freeze > requirements.txt
    Lesson 30
  • コマンドから条件を渡す

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--month")
    args = parser.parse_args()
    Lesson 31
  • パスワードやキーを、環境変数から読む

    import os
    key = os.environ["API_KEY"]
    Lesson 32
  • APIを呼ぶ(自分のパソコンで)

    import requests
    r = requests.get(url, headers=headers, timeout=10)
    r.raise_for_status()
    data = r.json()
    Lesson 33