- AI ⚙️
生成AIデータ分析プロンプト集|CSV集計・グラフと検算
生成AIに CSV を分析させるときは、「分析して」と一度に頼むのではなく、列定義を渡す→前処理の方針を確認させる→集計→グラフ→検算の5段階に分けて指示します。 段階ごとに区切ると、どの行を除いたか、どの式で計算したかが見えるようになり、結果を自分で確かめられます。
この記事では、各段階の穴埋め式プロンプトと、列名・型・単位・欠損の扱いを書くデータ辞書のテンプレート(Markdown の表と CSV)を載せます。あわせて、行数・合計・欠損数を pandas の数行で確かめるコードを、架空の発注履歴 203 行に対して動かした結果つきで示します。数式や SQL を作らせる話は扱わず、分析の進め方に絞っています。
確認環境:Ubuntu 24.04、Python 3.11.15、pandas 3.0.2、matplotlib 3.10.9(確認日 2026-10-06)。記事中の Python コードはこの環境で実行し、出力をそのまま載せています。各サービスの機能は、OpenAI・Anthropic・Google の公式ヘルプを 2026-10-06 に開いて確認できた範囲で書いています。プロンプトはこの記事で用意したテンプレートで、AI の回答例は載せていません。サンプルデータは架空のものです。
この記事の結論
- CSV 分析は ①列定義を渡す → ②前処理の方針を確認させる → ③集計 → ④グラフ → ⑤検算 の順に、段階を分けて頼む。
- 最初に渡すのは CSV 本体だけでなく、列名・型・単位・欠損の扱いを書いたデータ辞書。
- 件数が多い、または合計・平均が必要なら、AI がコードを実行する機能を使う。貼り付けた表を読ませるのは、少ない行数の傾向の確認や文章の整理に向く。
- 集計を頼むときは 「件数と計算式も一緒に出して」 と添え、行数・合計・欠損数は pandas でも数える。
5段階の早見表
| 段階 | AI に頼むこと | 自分が渡すもの | 受け取って確かめること |
|---|---|---|---|
| ① 列定義を渡す | 列の意味を理解し、読み込んだ行数と列の型を報告する | CSV、データ辞書、分析の目的 | 行数と列数が元のファイルと合っているか |
| ② 前処理の方針 | 欠損・重複・表記のゆれを調べ、扱い方の案を出す(まだ加工しない) | 除外の基準(取消の扱いなど) | 案の内容と、対象になる行数 |
| ③ 集計 | 決めた方針で整え、指定した切り口で集計する | 切り口、指標、期間、並び順 | 件数の推移、計算式、内訳の合計 |
| ④ グラフ | 集計表をグラフにする | グラフの種類、軸、単位、並び順 | 軸の始点、棒や点の数、元の表との一致 |
| ⑤ 検算 | 集計結果を別の方法で数え直し、差を報告する | 自分で数えた行数・合計 | 自分の値と一致しているか |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIデータ分析プロンプト集|CSV集計・グラフと検算」
コード実行と「貼り付けた表を読む」の違いと選び方
生成AIにデータを扱わせる方法は、大きく2つあります。AI が Python などのコードを書いて実行し、その結果を答える方法と、チャット欄に貼り付けた表を文章と同じように読んで答える方法です。
| 比べる点 | AI がコードを実行して計算する | 貼り付けた表を読んで答える |
|---|---|---|
| 渡し方 | CSV や Excel のファイルを添付する | 表をチャット欄に貼り付ける |
| 計算の方法 | 書かれたコードが実行され、その出力が答えになる | 文章の生成として答えが作られる |
| 確かめ方 | 実行されたコードと出力を読める。同じコードを手元でも動かせる | 途中の計算が残らないため、自分で数え直す |
| 向いている量 | 数百行以上、複数ファイル | 数十行までの小さな表 |
| 向いている作業 | 合計・平均・件数、クロス集計、グラフ | 列の意味の整理、傾向の言い換え、報告文の下書き |
どちらを使うかの判断表
| 条件 | 選ぶもの |
|---|---|
| 件数が多い(画面に収まらない行数) | コード実行 |
| 合計・平均・割合など、数値を報告に使う | コード実行 |
| グラフを画像やファイルで受け取りたい | コード実行 |
| 同じ集計を来月も繰り返す | コード実行(コードを保存して再利用する) |
| 10〜20行ほどの表から気づいた点を挙げてほしい | 貼り付けでもよい |
| 集計済みの表を、報告用の文章にまとめたい | 貼り付けでもよい |
| ファイルを添付できない環境で使っている | 貼り付け(数値は自分で検算する) |
迷ったら、「数値を人に報告するならコード実行」と決めておくと選びやすくなります。
各サービスの公式ヘルプで確認できた範囲
| サービス | 公式ヘルプに書かれている内容(2026-10-06 に確認) |
|---|---|
| ChatGPT | データ分析では、状態を保持する Jupyter ノートブック環境で Python コードを書いて実行する。対象は .xls・.xlsx・.csv などの表計算ファイルや、.json・.txt などのテキスト・データファイル。グラフは画像として作られ、棒・折れ線・円・散布図は対話的に表示できる場合がある。Python 環境から外部への通信はできない。生成されたコード・出力・前提を確認してから結果を使うよう案内されている |
| Claude | 設定の「Capabilities」で「Code execution and file creation」を有効にすると、専用の実行環境でコード(Python や JavaScript など)を書いて実行できる。CSV・TSV などのデータファイルの処理、グラフの PNG 出力、Excel ファイルの作成に対応。ファイルは1つあたり 30MB まで |
| Gemini | 表計算ファイルなどをアップロードでき、アップロードした表からグラフの作成を頼める。1回のプロンプトに付けられるファイルは 10 個まで、多くの種類で1ファイル 100MB まで |
機能の名前や上限は変わることがあるので、使う前に各社の公式ヘルプで最新の内容を確かめてください。組織で使う場合は、データを外部のサービスに渡してよいかを自社の規程で確認してから進めます。
データ辞書のテンプレート(列定義の渡し方)
データ辞書は、CSV の各列について「何が入っているか」を1行ずつ書いた表です。AI は列名だけでは、単位や、空欄が「0」なのか「不明」なのかを判断できません。列名・型・単位・欠損の扱いの4つを書いておくと、前処理の案が具体的になります。
Markdown の表(空のテンプレート)
| 列名 | 意味 | 型 | 単位・書式 | 取りうる値・範囲 | 欠損の扱い | 備考 |
|---|---|---|---|---|---|---|
| | | | | | | |
記入例(架空の備品発注履歴 orders.csv)
| 列名 | 意味 | 型 | 単位・書式 | 取りうる値・範囲 | 欠損の扱い | 備考 |
|---|---|---|---|---|---|---|
| order_id | 発注番号 | 文字列 | PO-0001 形式 | 一意 | 欠損なしの想定 | 同じ番号が複数あれば重複 |
| order_date | 発注日 | 日付 | YYYY-MM-DD | 2026-04-01〜2026-09-30 | 欠損なしの想定 | 区切りが / の行が混ざる |
| dept | 発注した部署 | 文字列 | ― | 総務部/開発部/営業部 | 欠損なしの想定 | ― |
| category | 分類 | 文字列 | ― | 文具/PC周辺/清掃 | 欠損なしの想定 | ― |
| item | 品名 | 文字列 | ― | ― | 欠損なしの想定 | ― |
| qty | 数量 | 整数 | 個 | 1〜20 | 空欄は「不明」。0 ではない | 空欄の行は集計から外し、件数を報告 |
| unit_price | 単価 | 整数 | 円(税抜) | 正の数 | 欠損なしの想定 | ― |
| status | 状態 | 文字列 | ― | 納品済/取消 | 欠損なしの想定 | 取消は集計から外す |
CSV 形式(表計算ソフトに貼れる形)
列名,意味,型,単位・書式,取りうる値・範囲,欠損の扱い,備考
order_id,発注番号,文字列,PO-0001 形式,一意,欠損なしの想定,同じ番号が複数あれば重複
order_date,発注日,日付,YYYY-MM-DD,2026-04-01〜2026-09-30,欠損なしの想定,区切りが / の行が混ざる
dept,発注した部署,文字列,,総務部/開発部/営業部,欠損なしの想定,
category,分類,文字列,,文具/PC周辺/清掃,欠損なしの想定,
item,品名,文字列,,,欠損なしの想定,
qty,数量,整数,個,1〜20,空欄は「不明」。0 ではない,空欄の行は集計から外し件数を報告
unit_price,単価,整数,円(税抜),正の数,欠損なしの想定,
status,状態,文字列,,納品済/取消,欠損なしの想定,取消は集計から外す
データ辞書に加えて、次の3点も最初に伝えます。
| 伝えること | 書き方の例 |
|---|---|
| 1行が何を表すか | 「1行が1件の発注」 |
| 計算で作る指標の定義 | 「金額 = qty × unit_price」 |
| 分析の目的と読み手 | 「分類別・月別の発注金額を、総務部の月次の振り返りで使う」 |
段階別の穴埋め式プロンプト
{ } の部分を自分のデータに合わせて書き換えて使います。
① 列定義を渡す
添付の CSV({ファイル名})を分析します。まだ集計はせず、読み込みの確認だけをしてください。
# データの説明
- 1行が表すもの: {1行が1件の発注 など}
- 分析の目的: {何を知りたいか、誰が読むか}
# データ辞書
{データ辞書の表を貼る}
# 指標の定義
- {金額 = qty × unit_price など}
# してほしいこと
1. ファイルをコードで読み込み、行数・列数・各列の型を報告する
2. データ辞書と実際の中身が食い違う列があれば挙げる
3. 先頭5行を表示する
分からない点は推測せず、質問してください。
② 前処理の方針を確認させる
集計の前に、データの状態を調べてください。この段階ではデータを加工しないでください。
# 調べること
- 列ごとの欠損数
- 完全に同じ行の数、{キーの列} が重複している行の数
- {日付の列} の書き方のゆれ、範囲外の日付
- {数値の列} の最小・最大、負の値や極端に大きい値
- {分類の列} の値の種類と件数(表記のゆれを含む)
# 出力形式
| 見つかった点 | 該当する行数 | 扱い方の案(A案/B案) | おすすめと理由 |
私が方針を決めてから、次の指示で加工に進みます。
③ 集計
次の方針で前処理をしてから、集計してください。
# 前処理の方針
1. {完全に同じ行は1行にする}
2. {status が「取消」の行は外す}
3. {qty が空の行は外す}
4. {order_date の区切りを - にそろえる}
# 集計
- 切り口: {category 別}、{月別}
- 指標: {件数、数量の合計、金額の合計}
- 期間: {2026-04-01 から 2026-09-30 まで(両端を含む)}
- 並び順: {金額の大きい順}
# 一緒に出すもの
- 前処理の各手順で、行数が何行から何行になったか
- 各指標の計算式
- 内訳の合計が全体の値と一致することの確認
- 実行したコード
④ グラフ
③の {月別の金額} をグラフにしてください。
- 種類: {棒グラフ}
- 横軸: {月(2026-04 から時系列順)}
- 縦軸: {金額(円)。0 から始める}
- タイトル: {月別の発注金額(納品済のみ)}
- 各棒の上に値を表示する
- 色は {1色}。強調したい月があれば {その月だけ別の色}
- 画像(PNG)と、グラフの元になった表の両方を出す
グラフから読み取れることを書くときは、表の数値を根拠として添えてください。
⑤ 検算
③の結果を検算します。
# 私が手元で数えた値
- 元のファイルの行数: {203}
- 重複行の数: {3}
- status の内訳: {納品済 189、取消 14}
- qty の欠損数: {5}
# してほしいこと
1. 上の値と、あなたが読み込んだデータの値が一致するかを表で示す
2. ③の合計を、③とは別の方法({月別の合計を足し上げる など})で計算し直し、差があれば原因を調べる
3. 一致しない項目があれば、どの手順で差が出たかを報告する
集計を頼むときに添える一文
段階を分けない場合でも、次の一文を添えるだけで結果を確かめやすくなります。
集計結果と一緒に、対象にした件数、除外した件数とその理由、各指標の計算式、実行したコードも出してください。
目的別の追加プロンプト
| 目的 | プロンプト |
|---|---|
| クロス集計 | {行の列} を行、{列の列} を列にしたクロス集計表を作り、行と列の合計も付けてください。合計が全体の {指標} と一致することを確認してください。 |
| 上位の抽出 | {指標} の上位 {10} 件を、順位・{表示する列}・全体に占める割合つきで出してください。同じ値の場合の順位の付け方も書いてください。 |
| 前の期間との比較 | {月別} の {指標} について、前月との差と増減率を出してください。増減率の式((当月 − 前月) ÷ 前月)と、前月が 0 のときの扱いも書いてください。 |
| 外れた値の確認 | {数値の列} について、{四分位範囲の1.5倍} を超える行を一覧にしてください。除外はせず、該当する行数と行の内容だけを報告してください。 |
| 欠損の影響の確認 | {列} が空の行を除いた場合と、{代わりの値} で補った場合とで、{指標} がどう変わるかを並べて出してください。 |
| 結果の要約 | ここまでの集計表だけを根拠に、気づいた点を3つ挙げてください。各項目に、根拠となる数値と表の名前を添えてください。表から言えないことは書かないでください。 |
| コードの持ち帰り | ここまでの前処理と集計を、1つの Python スクリプトにまとめてください。入力ファイル名は先頭の変数で変えられるようにし、各手順の後に行数を表示してください。 |
検算:行数・合計・欠損数を pandas で自分でも確かめる
AI に渡す前と、結果を受け取った後に、同じファイルを手元でも数えます。確かめるのは行数・欠損数・重複・合計の4つで、コードは数行です。
サンプルデータを作る
手元で試せるよう、架空の備品発注履歴を作るスクリプトを用意しました。数量の空欄5件、日付の書き方が違う行4件、重複3行をわざと入れています。
# サンプルの orders.csv(架空の備品発注履歴)を作る
import csv, random
from datetime import date, timedelta
random.seed(42)
items = {
"文具": [("コピー用紙A4", 480), ("付せん", 320), ("ボールペン10本", 900)],
"PC周辺": [("USBケーブル", 780), ("マウス", 1980), ("延長コード", 1280)],
"清掃": [("ウェットシート", 420), ("ごみ袋45L", 560)],
}
depts = ["総務部", "開発部", "営業部"]
rows = []
for i in range(1, 201):
cat = random.choice(list(items))
item, price = random.choice(items[cat])
d = date(2026, 4, 1) + timedelta(days=random.randrange(183))
status = random.choices(["納品済", "取消"], weights=[9, 1])[0]
rows.append([f"PO-{i:04d}", d.isoformat(), random.choice(depts), cat, item,
random.randint(1, 20), price, status])
# わざと入れる乱れ:数量の欠損5件、日付の書き方違い4件、重複3行
for i in (10, 55, 90, 130, 175):
rows[i][5] = ""
for i in (20, 60, 100, 140):
rows[i][1] = rows[i][1].replace("-", "/")
rows += [rows[5][:], rows[77][:], rows[150][:]]
with open("orders.csv", "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["order_id", "order_date", "dept", "category", "item", "qty", "unit_price", "status"])
w.writerows(rows)
print("書き出した行数(見出しを除く):", len(rows))
書き出した行数(見出しを除く): 203
先頭の4行は次のとおりです。
order_id,order_date,dept,category,item,qty,unit_price,status
PO-0001,2026-04-07,総務部,清掃,ウェットシート,8,420,納品済
PO-0002,2026-04-27,営業部,文具,ボールペン10本,3,900,納品済
PO-0003,2026-04-09,総務部,清掃,ごみ袋45L,8,560,納品済
渡す前に数える
# AI に渡す前と、AI の集計結果を受け取った後に、自分でも数える
import pandas as pd
df = pd.read_csv("orders.csv", dtype={"order_id": str})
print("行数:", len(df))
print("列:", list(df.columns))
print("欠損数:")
print(df.isna().sum()[df.isna().sum() > 0])
print("重複行の数:", df.duplicated().sum())
print("status の内訳:", df["status"].value_counts().to_dict())
print("日付の書き方が YYYY-MM-DD でない行:",
(~df["order_date"].str.match(r"^\d{4}-\d{2}-\d{2}$")).sum())
print("数量の合計(欠損は除く):", int(df["qty"].sum()))
実行結果です。
行数: 203
列: ['order_id', 'order_date', 'dept', 'category', 'item', 'qty', 'unit_price', 'status']
欠損数:
qty 5
dtype: int64
重複行の数: 3
status の内訳: {'納品済': 189, '取消': 14}
日付の書き方が YYYY-MM-DD でない行: 4
数量の合計(欠損は除く): 2132
この出力をメモしておき、⑤の検算プロンプトの「私が手元で数えた値」に書き込みます。AI が読み込んだ行数がここと違っていれば、文字コードや見出し行の扱いで読み込みがずれている合図になります。
方針どおりに集計し、件数の推移と合計を確かめる
③で AI に頼むのと同じ処理を、手元でも行うコードです。各手順の後に行数を記録し、内訳の合計が全体と一致することを assert で確かめています。
# 前処理の方針どおりに整えてから集計し、検算用の件数と合計を一緒に出す
import pandas as pd
df = pd.read_csv("orders.csv", dtype={"order_id": str})
n0 = len(df)
df = df.drop_duplicates() # 方針1: 完全に同じ行は1行にする
n1 = len(df)
df = df[df["status"] == "納品済"] # 方針2: 取消は集計から外す
n2 = len(df)
df = df.dropna(subset=["qty"]) # 方針3: 数量が空の行は外す(件数を報告)
n3 = len(df)
df["order_date"] = pd.to_datetime(df["order_date"].str.replace("/", "-")) # 方針4: 日付をそろえる
df["amount"] = df["qty"] * df["unit_price"] # 金額 = 数量 × 単価
print(f"行数の推移: 読み込み {n0} → 重複除外 {n1} → 取消除外 {n2} → 数量欠損除外 {n3}")
by_cat = df.groupby("category").agg(件数=("order_id", "count"),
数量=("qty", "sum"),
金額=("amount", "sum")).astype(int)
by_cat.loc["合計"] = by_cat.sum()
print(by_cat)
# 検算: 内訳の合計が、全体を直接数えた値と一致するか
assert by_cat.loc["合計", "件数"] == len(df)
assert by_cat.loc["合計", "金額"] == int(df["amount"].sum())
print("検算OK: 件数", len(df), "/ 金額", int(df["amount"].sum()))
monthly = df.groupby(df["order_date"].dt.strftime("%Y-%m")).agg(件数=("order_id", "count"), 金額=("amount", "sum")).astype(int)
print(monthly)
print("月別の金額の合計:", int(monthly["金額"].sum()))
monthly.to_csv("monthly.csv")
実行結果です。
行数の推移: 読み込み 203 → 重複除外 200 → 取消除外 186 → 数量欠損除外 181
件数 数量 金額
category
PC周辺 59 631 858880
文具 67 712 380600
清掃 55 612 300300
合計 181 1955 1539780
検算OK: 件数 181 / 金額 1539780
件数 金額
order_date
2026-04 33 264380
2026-05 27 170660
2026-06 29 245480
2026-07 36 310040
2026-08 27 241520
2026-09 29 307700
月別の金額の合計: 1539780
分類別の合計(1,539,780)と月別の合計(1,539,780)が一致しました。切り口を変えても合計が同じになるかは、手軽で効果の大きい検算です。
前処理をしない場合との差
同じファイルを、重複も取消もそのままにして合計するとどうなるかも確かめました。
# 前処理をしないまま合計した場合との差を見る
import pandas as pd
df = pd.read_csv("orders.csv", dtype={"order_id": str})
df["amount"] = df["qty"] * df["unit_price"]
print("前処理なしの行数:", len(df), "/ 金額の合計:", int(df["amount"].sum()))
前処理なしの行数: 203 / 金額の合計: 1672740
| 集計のしかた | 対象の行数 | 金額の合計 |
|---|---|---|
| 前処理なし(数量が空の行は金額が計算されず、合計に入らない) | 203 | 1,672,740 |
| 重複・取消・数量の空欄を除外 | 181 | 1,539,780 |
| 差 | 22 | 132,960 |
方針を決めずに「合計を出して」と頼むと、どちらの数字が返ってくるかは指示からは決まりません。②で方針を確認する段階を挟む理由がここにあります。
グラフも元の表と突き合わせる
④で受け取ったグラフは、棒の数と値を元の集計表と見比べます。手元で同じグラフを作るコードは次のとおりです。
# 月別の金額を棒グラフにして PNG で保存する
import pandas as pd
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
monthly = pd.read_csv("monthly.csv")
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(monthly["order_date"], monthly["金額"])
ax.set_title("Monthly order amount (delivered only)")
ax.set_xlabel("month")
ax.set_ylabel("amount (JPY)")
ax.set_ylim(0) # 棒グラフの縦軸は 0 から始める
for x, y in zip(monthly["order_date"], monthly["金額"]):
ax.text(x, y, f"{y:,}", ha="center", va="bottom", fontsize=8)
fig.tight_layout()
fig.savefig("monthly.png", dpi=120)
print("保存しました: monthly.png / 棒の数:", len(monthly), "/ 棒の合計:", int(monthly["金額"].sum()))
保存しました: monthly.png / 棒の数: 6 / 棒の合計: 1539780
グラフで見る点は次の4つです。
| 見る点 | 確かめ方 |
|---|---|
| 棒や点の数 | 集計表の行数と同じか(ここでは6か月ぶん) |
| 値 | 各棒のラベルが集計表の値と同じか |
| 縦軸の始点 | 棒グラフは 0 から始まっているか |
| 並び順 | 時系列なら日付順、比較なら指定した順になっているか |
確かめて分かったこと
- 数量が空の行は、エラーにならずに合計から外れます。 pandas の
sum()は欠損を飛ばして合計するため、前処理なしでも計算は最後まで進みました。空欄があること自体に気づくには、isna().sum()で欠損数を先に数える必要があります。 - 重複と取消を残すと、合計は 132,960 大きくなりました。 扱いが分かれるのは 203 行のうち 22 行(重複 3、取消 14、数量の空欄 5)で、金額の差は重複と取消の行から生まれています。
- 日付の書き方が4行だけ違っていても、行数や合計の検算では見つかりません。 月別の集計で初めて影響が出るため、書式に合わない行の数を別に数えました。
- 内訳を足し上げた値と、全体を直接数えた値を比べる方法は、分類別でも月別でも同じ 1,539,780 になり、切り口をまたいだ検算として使えました。
- 公式ヘルプでも、生成されたコード・出力・前提を確認してから結果を使うよう案内されています(OpenAI のヘルプ)。コードを実行する機能を使う場合も、検算の段階は省かずに残します。
プロンプトを送る前のチェックリスト
| 確認すること | 内容 |
|---|---|
| データを渡してよいか | 個人を特定できる列や社外に出せない列を外したか、自社の規程に沿っているか |
| 1行が表すもの | 「1行=1件の発注」のように書いたか |
| データ辞書 | 列名・型・単位・欠損の扱いを書いたか |
| 指標の定義 | 計算式を書いたか |
| 期間 | 開始日と終了日、両端を含むかを書いたか |
| 除外の基準 | 取消・重複・空欄の扱いを決めたか |
| 出力 | 件数・計算式・コードを一緒に出すよう頼んだか |
| 手元の値 | 行数・欠損数・合計を自分でも数えたか |
よくある質問
Q. 生成AIに CSV を分析させるプロンプトのコツは? A. 段階を分けて頼むことです。列定義を渡す、前処理の方針を確認させる、集計、グラフ、検算の順に区切り、各段階で行数と計算式を出してもらうと、結果を確かめながら進められます。
Q. コード実行と、表を貼り付けて聞く方法の違いは? A. 計算がコードの実行結果として出るか、文章の生成として出るかの違いです。件数が多いときや、合計・平均を報告に使うときはコード実行を選び、実行されたコードも一緒に確認します。
Q. AI の集計結果が合っているか確かめるには?
A. 行数・欠損数・重複数・合計の4つを、自分でも数えて比べます。pandas なら len(df)、df.isna().sum()、df.duplicated().sum()、df["列"].sum() の4行で数えられます。
Q. データ辞書とは何ですか? A. CSV の各列について、意味・型・単位・欠損の扱いなどを1行ずつまとめた表です。列名だけでは伝わらない「空欄は 0 なのか不明なのか」「単位は何か」を AI に伝える役割があります。
Q. グラフが思った形にならないときは? A. グラフの種類、横軸と縦軸の列、単位、並び順、縦軸の始点を指定し直します。元になった集計表も一緒に出してもらうと、形の問題か数値の問題かを切り分けられます。
まとめ
- CSV 分析は 列定義 → 前処理の方針 → 集計 → グラフ → 検算 の5段階に分けて頼む
- 最初に データ辞書(列名・型・単位・欠損の扱い) と、1行が表すもの・指標の定義を渡す
- 件数が多い、合計や平均が要るならコード実行。貼り付けは小さな表の整理や文章化に使う
- 集計の指示には 「件数・除外した件数と理由・計算式・コードも出して」 を添える
- 行数・欠損数・重複数・合計は pandas の数行で自分でも数える
- 切り口を変えても合計が一致するか、グラフの棒の数と値が表と合うかを見る
- 前処理の方針しだいで合計は変わる。サンプルでは 203 行のうち 22 行の扱いで 132,960 の差が出た
参考・出典
- OpenAI Help Center「Data analysis with ChatGPT」 https://help.openai.com/en/articles/8437071-data-analysis-with-chatgpt (2026-10-06 閲覧)
- Claude Help Center「Create and edit files with Claude」 https://support.claude.com/en/articles/12111783-create-and-edit-files-with-claude (2026-10-06 閲覧)
- Gemini アプリ ヘルプ(ファイルのアップロードに関するページ) https://support.google.com/gemini/answer/14903178 (2026-10-06 閲覧)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIデータ分析プロンプト集|CSV集計・グラフと検算」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。