Claude Code と一緒に野菜市況データを分析・予測してみた

「東京都の野菜市況データを分析して、半年先の単価を予測したい」——そんなざっくりとした目標から始まったデータ分析プロジェクトを、AI コーディングツール Claude Code と一緒に進めてみました。

驚いたのは、CSV の結合から Prophet による時系列予測、JSON 変換、可視化まで、ほぼすべての作業を自然言語で指示するだけで完結できたことです。本記事では、その作業の流れと内容を紹介します。


使ったデータ

農林水産省が公開している 青果物卸売市場調査 の市況データ(CSV 形式)を使用。

  • 対象期間:2016年〜2026年
  • 対象市場:全国 14 市場(東京・大阪・横浜・名古屋・神戸・京都・福岡・広島・札幌・仙台・金沢・高松・北九州・沖縄)
  • 主なカラム:date(日付)、item_name(品目名)、quantity(数量)、price(単価)

Step 1|CSV ファイルの結合

まず、2種類のデータを縦結合する必要がありました。

  • tokyo_vegetables_total.csv:2016〜2025年10月の東京市況(過去の蓄積データ)
  • tokyo_ty_summary.csv:2025年10月〜2026年3月の最新データ

「2つの CSV を縦結合できますか?」と聞いたところ、Claude Code は両ファイルの カラム名・順序・データ型をすべて自動で比較し、「結合可能です」と判断。さらに重複する日付(2025-10-21 と 2025-10-23)を自動検出し、新しいデータで上書きしながら結合してくれました。

結合前 tokyo_vegetables_total.csv : 143,471 行
結合後                             : 148,363 行
期間  : 2016-01-05 〜 2026-03-31

最初の実行では iCloud Drive のパスにスペースが含まれていたため保存に失敗しましたが、エラーの原因を自己診断して絶対パスで再実行——という 自己修復 も見せてくれました。


Step 2|売上高ランキングの算出

「売上高上位 13 品目を推してください」という指示で、quantity × price = 売上高 の計算と集計を自動実行。

順位品目売上高合計(円)
1その他の野菜289,798,130,025
2トマト266,842,676,864
3きゅうり204,764,482,941
4ねぎ191,501,078,557
5キャベツ165,230,135,363
6レタス159,097,825,127
7たまねぎ142,461,080,667
8ミニトマト138,247,379,456
9ばれいしょ134,194,955,611
10なす128,855,848,900

1位の「その他の野菜」は複数品目の集計カテゴリであることを Claude Code 自ら指摘し、「実質的な単品1位はトマトです」とコメント。分析者の視点を持った応答が印象的でした。


Step 3|週次平均単価の算出

「その他の野菜を除いた上位10品目の、週ごとの平均単価を算出して新しい CSV に保存してください」——この一言で、

  1. 集計カテゴリの除外
  2. 週次(W)リサンプリング
  3. 品目×週のクロス集計
  4. CSV 出力

までを一括処理。出力ファイル tokyo_top10_weekly_avg_price.csv には 5,350行・2016〜2026年 の週次データが格納されました。


Step 4|Prophet による単価予測(東京)

Meta が開発した時系列予測ライブラリ Prophet を使って、上位10品目の 半年間(26週) の週次単価を予測しました。

過去のコードを参考として渡すと、Claude Code はそれを以下のように適応:

  • Google Colab 固有のコード(files.download 等)を自動で除去
  • ローカル実行・絶対パスでの保存に書き換え
  • macOS の日本語フォント(Hiragino Sans)を自動設定
  • 実績(青線)+予測(赤破線)の可視化グラフを品目ごとに PNG 出力
model = Prophet(weekly_seasonality=True, daily_seasonality=False)
model.fit(prophet_df)
future = model.make_future_dataframe(periods=26, freq='W')
forecast = model.predict(future)

Step 5|予測結果を JSON に変換

既存の市況 JSON フォーマット(market_data_6months.json)を見せ、「この形式に変換してください。market_name は東京、actual_price は null で」と一言。

{
    "market": [
        {
            "crop_name": "トマト",
            "markets": [
                {
                    "market_name": "東京",
                    "weeks": [
                        {
                            "date": "2026-04-12",
                            "actual_price": null,
                            "predicted_price": 552.7
                        }
                    ]
                }
            ]
        }
    ]
}

JSON の構造を解析し、CSV → JSON の変換を自動で実装。フォーマットの意図を読み取って忠実に再現してくれました。


Step 6|全国 14 市場に拡張

「各市場ごとに同じことをやってほしい」——この一言で、東京だけでやったことを 14市場すべてに自動展開

各市場フォルダの生データ(Shift-JIS エンコーディング、日付が年/月/日の別列)を自動検出・整形し、各市場の過去データと結合。さらに:

  • 市場ごとの売上上位10品目を独自に算出(市場によってランキングが異なる)
  • 140品目分の Prophet モデルを学習・予測
  • 全結果を一つの JSON に統合
処理市場:広島・福岡・金沢・北九州・神戸・京都・名古屋・
          沖縄・大阪・札幌・仙台・高松・東京・横浜(計14市場)
ユニーク品目数:19品目
総予測データ:3,640行(19品目 × 最大14市場 × 26週)

Step 7|予測の妥当性を可視化

最後に「予測がちゃんとできているか分かるように可視化して」という指示で、直近2年の実績データと半年予測を重ねたグラフを自動生成。

  • 品目別グラフ(19枚):市場ごとのサブプロットで実績+予測を並べて表示
  • サマリーグラフ(1枚):全19品目 × 全市場の予測単価を一覧比較

実績の季節変動パターンを Prophet が学習し、同様の季節性を持つ予測曲線が生成されていることを視覚的に確認できます。


やりとりの例

実際の会話はこんな感じです:

ユーザー: 結合してその結果のファイルはどこに保存してあるんですか?

Claude Code: data_cleansed/vegetables/tokyo_vegetables_total.csv に上書き保存しました。

ユーザー: え?本当に結合されてますか?本当に結合されていたら最新 date は 2026年3月31日のはずですが

Claude Code: 確認します。……結合されていませんでした。申し訳ありません。iCloud Drive のスペース含みパスで保存先がずれていました。絶対パスで再実行します。

ミスを正直に認め、原因を特定して修正する——このやりとりが象徴するように、Claude Code は 単なるコード生成ツールではなく、一緒に問題を解くパートナー として機能します。


まとめ

作業従来Claude Code
CSV 結合・重複処理pandas コードを書く自然言語で指示
売上ランキング算出集計コードを書く自然言語で指示
Prophet 予測ドキュメントを読みながら実装参考コードを渡して適応
JSON 変換フォーマットを解析して実装サンプルを見せて一言
14市場への拡張ループ処理を設計・実装「全市場に同じことをして」

データ分析の専門知識があれば、Claude Code との組み合わせで アイデアから成果物までの時間を大幅に短縮 できます。「こういうことがしたい」という意図さえ明確であれば、実装の詳細は任せてしまえる——そんな新しい分析スタイルの可能性を感じました。


使用ツール:Claude Code / Python / pandas / Prophet / matplotlib
データ:農林水産省 青果物卸売市場調査

コメント

タイトルとURLをコピーしました