Forum スポンサーリンク 2026.05.16 MenuForum NavigationForumMembersActivityLoginRegisterForum breadcrumbs - You are here:ForumShareKnowledge: ClaudeCodeClaudeCode001Post ReplyPost Reply: ClaudeCode001 <blockquote><div class="quotetitle">Quote from Guest on 2026-07-23, 10:31</div>{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 設備投資額×業況判断DI 移動平均 重ね合わせ(全業種シフトなし)n", "n", "機械関連5業種(電気機械/業務用機械/造船・重機等/はん用機械)+自動車+製造業平均が対象。n", "ソフトウェア投資額は対象外、設備投資額(item109)のみ。n", "n", "- 縦軸(目的変数): 設備投資額 前年度比・年度計画チェーン(3/6/9/12月調査)+実績見込・実績を統合した連続四半期系列の4四半期(1年)移動平均n", "- 右軸(説明変数): 業況判断DI「最近」実績の4四半期(1年)移動平均n", "- 本ノートブックは全業種シフトなし版(電気機械1Q・業務用機械2Q先行整置版は別図)n", "n", "**ベース**: CSJP短観調査/IPYNB/業況判断DIplot.ipynb の取得関数・配色・系列コード知識を流用。n", "n", "上から順にセルを実行すると、output/ にPNGが保存される。n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 設定・系列コード・配色" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- セル1: 設定・系列コード・配色 ---n", "import osn", "import datetime as dtn", "n", "import requestsn", "import pandas as pdn", "import matplotlibn", "matplotlib.use("Agg")n", "import matplotlib.pyplot as pltn", "n", "BASE = os.getcwd()n", "os.makedirs(os.path.join(BASE, "output"), exist_ok=True)n", "n", "API = "https://www.stat-search.boj.or.jp/api/v1/getDataCode"n", "RETRIEVED = str(dt.date.today())n", "DISCLAIMER = ("このサービスは、日本銀行時系列統計データ検索サイトのAPI機能を使用しています。"n", " "サービスの内容は日本銀行によって保証されたものではありません。")n", "n", "# 業種コード(大企業製造業): 業況判断DI item601/設備投資額 item109 共通n", "IND = {"1150": "電気機械", "1143": "業務用機械", "1185": "造船・重機等",n", " "1141": "はん用機械", "1180": "自動車", "1000": "製造業平均"}n", "PANELS = ["電気機械", "業務用機械", "造船・重機等", "はん用機械", "自動車", "製造業平均"]n", "n", "INV_COLOR = "#0b0b0b"n", "DI_COLOR = "#c00000"n", "n", "jp_fonts = ["Meiryo", "Yu Gothic", "MS Gothic"]n", "plt.rcParams["font.family"] = jp_fontsn", "plt.rcParams["axes.unicode_minus"] = Falsen", "n", "n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. データ取得関数" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- セル2: データ取得関数 ---n", "def fetch(codes, start, end):n", " r = requests.get(API, params={n", " "format": "json", "lang": "jp", "db": "CO",n", " "startDate": start, "endDate": end, "code": ",".join(codes)}, timeout=60)n", " r.raise_for_status()n", " rows = []n", " for rec in r.json()["RESULTSET"]:n", " c = rec["SERIES_CODE"]n", " for d, v in zip(rec["VALUES"]["SURVEY_DATES"], rec["VALUES"]["VALUES"]):n", " if v in ("ND", "", None):n", " continuen", " rows.append({"series_code": c, "date": str(d), "value": float(v)})n", " return pd.DataFrame(rows)n", "n", "n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. データ取得(DI・設備投資額)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- セル3: データ取得(DI「最近」実績・四半期/設備投資額 前年度比・年度計画6調査回) ---n", "di_codes = [f"TK99F{k}601GCQ01000" for k in IND]n", "di = fetch(di_codes, "201501", "202603")n", "di["ind"] = di.series_code.str[5:9].map(IND)n", "n", "inv_codes = [f"TK99G{k}109CFY{r}1000" for k in IND for r in "012345"]n", "inv = fetch(inv_codes, "2014", "2027")n", "inv["ind"] = inv.series_code.str[5:9].map(IND)n", "inv["round"] = inv.series_code.str[15]n", "inv["fy"] = inv["date"].astype(int)n", "n", "print("DI取得件数:", len(di), " / 設備投資額取得件数:", len(inv))n", "n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. 連続四半期系列化+4四半期(1年)移動平均" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- セル4: 連続四半期系列化+4四半期(1年)移動平均 ---n", "def q_to_date(s):n", " y, qq = int(s[:4]), int(s[4:])n", " return dt.date(y, qq * 3, 1)n", "n", "n", "ROUND_DATE = {n", " "5": lambda fy: dt.date(fy, 3, 1), "4": lambda fy: dt.date(fy, 6, 1),n", " "3": lambda fy: dt.date(fy, 9, 1), "2": lambda fy: dt.date(fy, 12, 1),n", " "1": lambda fy: dt.date(fy + 1, 3, 1), "0": lambda fy: dt.date(fy + 1, 6, 1),n", "}n", "n", "di["d"] = di["date"].map(q_to_date)n", "di = di.sort_values(["ind", "d"])n", "n", "inv["d"] = inv.apply(lambda r: ROUND_DATE[r["round"]](int(r["fy"])), axis=1)n", "n", "# 設備投資額: 年度計画改定チェーン(3/6/9/12月調査)+実績見込・実績を統合。n", "# 同一四半期に複数の読みが載る場合は平均してユニーク四半期化してから4Q移動平均。n", "inv_q = inv.groupby(["ind", "d"], as_index=False)["value"].mean().sort_values(["ind", "d"])n", "inv_q["ma4"] = inv_q.groupby("ind")["value"].transform(lambda s: s.rolling(4, min_periods=4).mean())n", "n", "di_q = di.copy()n", "di_q["ma4"] = di_q.groupby("ind")["value"].transform(lambda s: s.rolling(4, min_periods=4).mean())n", "n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. プロット(2×3、全業種シフトなし)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# --- セル5: プロット(2×3、全業種シフトなし) ---n", "fig, axes = plt.subplots(2, 3, figsize=(17, 9.5))n", "for ax, ind in zip(axes.flat, PANELS):n", " iv = inv_q[inv_q["ind"] == ind].dropna(subset=["ma4"])n", " dv = di_q[di_q["ind"] == ind].dropna(subset=["ma4"])n", "n", " ax2 = ax.twinx()n", " l1, = ax.plot(iv["d"], iv["ma4"], color=INV_COLOR, lw=2.2, label="設備投資額 前年度比 1年移動平均(左軸)")n", " l2, = ax2.plot(dv["d"], dv["ma4"], color=DI_COLOR, lw=2.0, ls="--",n", " label="業況判断DI 1年移動平均(右軸)")n", "n", " ax.axhline(0, color="#c3c2b7", lw=1.0, zorder=1)n", " ax.set_title(f"{ind}", fontsize=11.5, fontweight="bold")n", " ax.set_ylabel("設備投資額 前年度比(%、1年MA)", fontsize=8.5, color=INV_COLOR)n", " ax2.set_ylabel("業況判断DI(pt、1年MA)", fontsize=8.5, color=DI_COLOR)n", " ax.tick_params(axis="y", labelsize=8, colors=INV_COLOR)n", " ax2.tick_params(axis="y", labelsize=8, colors=DI_COLOR)n", " ax.tick_params(axis="x", labelsize=8)n", " ax.grid(axis="y", alpha=0.2)n", " ax.legend([l1, l2], [l1.get_label(), l2.get_label()], fontsize=7, loc="upper left", framealpha=0.9)n", "n", "fig.suptitle("設備投資額(前年度比・1年移動平均)と業況判断DI(1年移動平均)の重ね合わせ ― 全業種シフトなし",n", " fontsize=14, fontweight="bold", x=0.02, ha="left", y=0.995)n", "fig.text(0.01, 0.005,n", " "(注)設備投資額は年度計画改定チェーン(3/6/9/12月調査)+実績見込・実績を統合した連続四半期系列の4四半期(1年)移動平均。\n"n", " " 業況判断DIは「最近」実績の4四半期移動平均。本図は全業種シフトなし。\n"n", " f"(出典)日本銀行「全国企業短期経済観測調査(短観)」時系列統計データ検索サイトAPI(取得日 {RETRIEVED})\n{DISCLAIMER}",n", " fontsize=7.3, color="#555555", va="bottom")n", "fig.subplots_adjust(top=0.88, bottom=0.13, left=0.045, right=0.965, hspace=0.32, wspace=0.38)n", "n", "outp = os.path.join(BASE, "output", "図10b_設備投資MA_DI_MA_重ね合わせ_シフトなし_6業種.png")n", "fig.savefig(outp, dpi=150)n", "print("saved:", outp)n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.13" } }, "nbformat": 4, "nbformat_minor": 5 }</blockquote><br> Cancel