ChatGPTでアンケート分析と調査レポート作成【2026年】プロンプト例つき

※2026年9月時点の情報に更新しました。
この記事は、2023年に管理人がChatGPTへアンケート結果の分析と調査レポート作成を任せた記録を、今のChatGPTに合わせて書き直したものです。実例のプロンプトとやり取りの画面はそのまま残し、機能名と手順は現在の公式ヘルプに合わせました。
当時は「Advanced Data Analysis(旧Code Interpreter)」と呼ばれていた機能は、OpenAIのヘルプでは現在「Data analysis with ChatGPT」(ChatGPTのデータ分析)として説明されています。この記事でも以下「データ分析」と呼びます。
この記事の要点
- CSVやExcelなどのファイルをChatGPTに添付し、知りたいことを伝えると、集計・表・グラフ・レポートの下書きまで進められます。
- 無料プランでもファイルのアップロードとデータ分析は使えますが、それぞれ別枠の上限があります。無料は1日3ファイルまで(公式ヘルプ、2026年9月29日に確認)。
- ChatGPTは初回で意図と違う手法やグラフを選ぶことがあります。公式ヘルプも、生成されたコードと前提を確認するよう案内しています。
- 同じ形式のアンケートを毎回分析するなら、最後の節のように Claude Code や Codex で手順をファイルに残して回す方法もあります。
管理人の実例では、分析とグラフの作成はすべてChatGPTが担当し、調査結果の文章も9割以上はChatGPTが書いた状態で、プレスリリースとして公開しました(細かな調整は人の手で入れています)。公開したレポートは次のとおりです。

データ分析機能そのものの説明は、次の記事にまとめています。ChatGPTのデータ分析機能(旧Advanced Data Analysis)の使い方と活用事例
分析に利用したデータ

分析に用いたのは「ChatGPTの利用傾向」についてのアンケート結果です。
データの形式は一般的なアンケート結果と同じなので、他のアンケートを分析するときも、この進め方が参考になります。
【アンケート調査対象】
調査対象:全国の男女
調査期間:2023年8月23日~2023年8月28日
調査機関:自社調査
調査方法:インターネットによる任意回答
有効回答数:1000人
今のChatGPTでデータ分析を使う手順【2026年9月】
2023年当時は「Advanced Data Analysis」という機能名でした。今の公式ヘルプ(Data analysis with ChatGPT)に、その機能をオンにする手順は出てきません。ファイルを添付して、何を知りたいかを書くのが基本です。

1. 表を整えてから添付する
公式ヘルプが勧める形は、1行目に見出し、1行に1件の回答、列名は日本語でも分かる平易な言葉、の3つです。対応するファイルは、.xls・.xlsx・.csv の表計算、PDF、.json・.xml・.yaml・.txt・.md などです(モデル・プラン・ワークスペースの設定で変わります)。
- 避けたいもの:1つのシートに無関係な表を複数置く、データの途中に空行や空列を入れる、分析したい値が画像になっている表
- Google DriveやOneDrive、SharePointなどは、コネクタが使えるアカウントやワークスペースでは、接続先から直接添付できます
アンケートの回答データは、Googleフォームなどからエクスポートした時点で、1行目が質問文そのままの長い列名になっていることがあります。「Q1_利用頻度」のように短い列名に付け替えておくと、後の指示で列を指定しやすくなります。
2. 目的・列・グラフの種類を書く
公式ヘルプは、ファイルから何を知りたいのかを伝え、使ってほしい列・計算・グループ分け・グラフの種類を指定するよう案内しています。管理人が2023年に使った指示の型を、今の書き方に直すと次のようになります。
添付したアンケート結果(1行が1人の回答)を分析して、調査レポートの下書きを作ってください。
進め方:
1. まず、各質問の集計方法とレポートの構成案を提案してください(分析はまだしない)
2. 私が了承したら、質問ごとに単純集計し、割合と一言の考察を付けてください
3. 性別・年代別の集計と、「ChatGPTを使ったことがある人」だけの集計も出してください
注意:割合は小数第1位まで。データにない数字は書かない。グラフの種類は私が指定します。
最初に「構成案の提案」だけを頼み、方針を確認してから分析に進むのが2023年の実例と同じ流れです。公式ヘルプにも、初回は意図と違う手法やグラフを選ぶことがあるため、必要なら手法・グラフの種類・列を具体的に指定する、とあります。
3. 表とコードを確認する
データ分析では、ChatGPTがPythonのコードを書いて実行します。公式ヘルプは、結果を使う前に生成されたコード・出力・前提を確認するよう案内しています。特定の方法で集計したいときは、その方法を見せるよう、または直すよう依頼できます。
アンケートで確認したい点は、無回答の扱い、複数回答の質問を人数で数えたか回答数で数えたか、割合の分母が全員か絞り込み後か、の3つです。ここが曖昧なまま出てきた数字は、レポートに載せる前に必ず確かめてください。
4. グラフは静止画から対話型に切り替えられる
グラフは画像として出力されるのが基本で、一部は対話型グラフとしても表示できます。対話型に切り替えられるときは「Switch to interactive chart」を選び、画像に戻すときは「Switch to static chart」を選びます。対話型に対応しているのは、棒・折れ線・円・散布図です。それ以外は静止画で返ることがあります。
2023年は、日本語が文字化けするため日本語フォントを一緒に添付していました。今の環境でフォントの添付が必要かどうかは、公式ヘルプに記載がなく確認できていません。文字化けが出たときの対処として、実例の画面を参考に残しています。
5. 上限と保存のルール
| 項目 | 公式ヘルプの記載(2026年9月29日確認) |
|---|---|
| 1ファイルの上限 | 512MB |
| CSV・表計算 | 約50MB(1行の大きさによる) |
| 無料プランのアップロード | 1日3ファイル |
| 全体のアップロード | 80ファイル/3時間(ピーク時は下げることがある) |
| Pythonの環境 | 外部のWebやAPIには接続できない。外部データは自分でアップロードする |
ヘルプには、ファイルが上がっても、大きすぎる・複雑すぎる・整っていないなどの理由で全体を分析しきれないことがある、とも書かれています。結果が不完全に見えるときは、特定のシート・行・列を指定するか、ファイルを分けて渡します。
画像化された表やスキャンしたPDFは、値を正確に読み取れないことがあります。数字が大事なアンケートは、表計算ファイルやテキストで渡してください。
実例:ChatGPTを使ったアンケート分析【2023年の画面】
ここからは、管理人が2023年に実際に行ったやり取りです。画面は当時のもので、今のChatGPTの表示とは違います。一方で、指示の出し方と、やり取りを重ねて直していく流れは、今も同じように使えます。
ChatGPTへの指示は、大きく2つのパートに分けました。複雑なタスクは、指示を分けて入力したほうが確認しやすくなります。
- アンケート結果の分析とプレスリリースの作成
- プレスリリースに貼る用のグラフの作成
①アンケート結果の分析とプレスリリースの作成

最初にアンケート結果のExcelデータをアップロードし、分析の注意点を伝えたうえで、次の手順で進めるよう指示しました。
- アンケート結果からプレスリリースの構成を考える
- 分析方法を考える
- 実際に分析する
- 分析結果をもとにプレスリリースを作成する
- 必要なグラフを作成する

まず、ChatGPTからプレスリリースの構成と必要な分析が返ってきました。提案された分析は、今回のアンケート項目に合っていると感じたので、その方針で進めてもらいました。

その後は特別な指示を出さなくても、ChatGPTが質問ごとに集計してくれました。集計するだけでなく、結果からの考察も付いています。

「ChatGPTを使ったことがある人」だけに絞った集計も、簡単な指示で出てきました。全項目をExcelで手作業で集計すると1時間以上かかる作業が、当時の体感では待ち時間ほとんどなしで済み、印象的でした。

具体的に頼んでいない性別・年代別の集計も出てきました。Excelなら「COUNTIF」などの関数を組み合わせる作業です。

全部の集計がそろったので、次にプレスリリースの文章を作ってもらいます。

文章は、ChatGPTが出したものに具体的な指示を重ねて整えていきます。ChatGPTは指示のない部分を自分で判断して進めるので、要望があるときはできるだけ細かく書くことが大切です。

一度の指示で完璧な文章を得るのは難しいので、何度かやり取りをしながら整えました。

全体がまとまったところで総括を加えて完成にしました。細かい表現は最後に手で直しましたが、作業のほとんどはChatGPTが行っています。
②グラフの作成

文章が固まったので、次はグラフです。まず完成した文章から必要な分析をリストアップしてもらい、その分析をもとにグラフを作ってもらいました。

1つ目のグラフは、色合いが微妙で、文字も小さく、円グラフを頼んだつもりが棒グラフでした。「このデータでグラフを作って」とだけ頼むと形式はChatGPTに任されるため、こうなります。円グラフが欲しいときは「円グラフで」と書く必要があります。今の公式ヘルプにも、同じ趣旨の注意があります。

一度で理想のグラフにするのは難しいので、形・色・文字の大きさについて細かくフィードバックを重ねます。

やり取りを続けるうちに形状・色合い・文字の大きさが整い、1つ目のグラフが完成しました。

2つ目以降は、この1つ目を基準にして同じ手順で作ってもらったので、時間はかかりませんでした。

棒グラフも同じ流れで作りましたが、ChatGPTが指示どおりに直っていないのに「変更しました」と返すことがありました。

この画像では「不満はない」だけ赤色にするよう頼み、「変更した」と返ってきたのに、色は変わっていません。「修正して」とだけ伝えても直らないことがあるので、どこが指示と違うのかを具体的に書いて直してもらうと、直る確率が上がります。
こうして、プレスリリースに載せたグラフはすべてChatGPTに作ってもらいました。文章の微調整は手作業でしたが、グラフは手作業なしです。今の環境で同じ作業をするときも、この「確認して具体的に直す」流れは変わりません。
データ分析を上手に使うコツ
データをアップロードして簡単な指示を出すだけで分析してくれる便利な機能ですが、良い結果を得るために大事なことがいくつかあります。
一番大切なのは、指示を明確にすることです。曖昧な指示だと、ChatGPTが独自の判断で分析やグラフを作り、思わぬ結果になります。グラフの種類を指定しなければ、円グラフを期待していても棒グラフが出ることがあります。
次に、複雑な分析は段階に分けることです。一度に全部を頼むより、構成案の確認、集計、グラフ、文章と順に進めるほうが、どこで間違えたかを確認しやすくなります。
三つ目は、やり取りを重ねて直すことです。修正が反映されないときは、原因を特定して具体的に伝えます。
四つ目は、今のヘルプが勧めている点です。表を整えて渡し、生成されたコードと前提を確認することです。集計の分母や無回答の扱いが自分の想定と違っていないかを、レポートにする前に見てください。
売上データを使った別の実例は、Excelで管理している売上データの分析をChatGPTに丸投げしてみたにまとめています。
Claude Code/Codex で自動化する
ChatGPTの画面でのやり取りは、1回きりの分析なら十分です。ところが月ごとや四半期ごとに同じ形式のアンケートが届くと、同じ指示を毎回打ち直すことになり、集計や分類の基準も少しずつぶれます。
Claude CodeとCodexは、パソコンのフォルダを作業場にして、ファイルを読み、スクリプトを書き、実行までするコマンドラインのAIツールです。集計のスクリプト・分類表・ルールをファイルに残せるので、次の回答が届いたら同じ手順をそのまま回せます。
この節の位置づけ:コマンドの書き方は、Claude Codeの公式ドキュメント(claude -p)とCodexの公式ドキュメント(codex exec)、および手元のヘルプ(Claude Code 2.1.233、codex-cli 0.146.0)で確かめました。ただし、このアンケートの題材で回した実測は取っていません。所要時間・費用・分類の精度は測っていないので、数字は書きません。集計と数字照合の2つのスクリプトは、架空の12件のデータで動作を確かめてあります。

1. 先に、回答者が特定できる列を外す
最初にやるのは分析ではなく、個人情報を外すことです。氏名・メールアドレス・電話番号・IPアドレス・会員番号のような、回答者を特定できる列は、AIに渡すファイルに入れません。
外す列を並べる「除外リスト」方式だと、新しい列が増えたときに外し忘れます。残す列だけを書く許可リスト方式にしておくと、知らない列は自動的に落ちます。
# scripts/make_clean.py(元データ raw/responses.csv から、残す列だけを work/ に書き出す)
import csv
KEEP = ["回答ID", "性別", "年代", "Q1_利用頻度", "Q2_満足度", "Q3_自由記述"]
with open("raw/responses.csv", encoding="utf-8-sig", newline="") as f, \
open("work/responses_clean.csv", "w", encoding="utf-8", newline="") as g:
r = csv.DictReader(f)
w = csv.DictWriter(g, fieldnames=KEEP)
w.writeheader()
for row in r:
w.writerow({k: row[k] for k in KEEP})
- 自由記述の中に、名前・勤務先・住所などが書かれていることがあります。分類に回す前に、目で確認するか、固有名詞を伏せ字にする処理を挟みます
- 元データの raw フォルダは、AIに読ませる作業フォルダの外に置くのが確実です
- そもそもそのデータをAIツールに渡してよいかは、アンケートの同意文面や勤務先のルールに従ってください
2. フォルダとルールを決める
survey/
├─ work/ responses_clean.csv(列を絞ったもの)
├─ codebook.md 自由記述の分類表
├─ scripts/ make_clean.py・aggregate.py・check_numbers.py
├─ out/ tables/・coded.csv・charts/・report_draft.md
└─ CLAUDE.md 作業のルール(CodexではAGENTS.md)
(元の回答CSVは survey の外に置く)
CLAUDE.md(Codexでは AGENTS.md)には、毎回守ってほしいことを書いておきます。ChatGPTの実例で起きた「指示にない部分を勝手に判断する」を、ルールで防ぐ役目です。
# 作業のルール
- 読んでよいのは work/ と codebook.md だけ。それ以外のフォルダは開かない
- レポートの数字は out/tables/ の CSV にあるものだけを使う。自分で計算した数字は書かない
- 割合は小数第1位まで。母数(人数)を必ず添える
- 自由記述は codebook.md のカテゴリだけで分類する。当てはまらないものは「その他」
- レポートを書いたら scripts/check_numbers.py を実行し、表にない数字が出たら直す
3. 集計は、毎回AIに計算させずスクリプトにして残す
単純集計と年代別の集計は、AIに頼んで一度だけスクリプトにしてもらい、その後は同じスクリプトを実行します。ChatGPTの実例にあった「直したと言っているのに直っていない」も、コードとして残っていれば中身を読んで確かめられます。
work/responses_clean.csv を読み、Q1_利用頻度 と Q2_満足度 の単純集計と、年代別の集計を
out/tables/ に CSV で出す scripts/aggregate.py を書いてください。
列は 人数 と 割合%(小数第1位)。書いたら実行して、出力ファイル名と件数を報告してください。
# scripts/aggregate.py
import csv, collections, pathlib
rows = list(csv.DictReader(open("work/responses_clean.csv", encoding="utf-8")))
out = pathlib.Path("out/tables"); out.mkdir(parents=True, exist_ok=True)
def count(col, by=None):
c = collections.Counter((r[by], r[col]) if by else r[col] for r in rows)
total = collections.Counter(r[by] for r in rows) if by else None
with open(out / f"{col}{'_by_' + by if by else ''}.csv", "w", encoding="utf-8", newline="") as f:
w = csv.writer(f)
w.writerow(([by] if by else []) + [col, "人数", "割合%"])
for k, n in sorted(c.items()):
base = total[k[0]] if by else len(rows)
w.writerow((list(k) if by else [k]) + [n, round(100 * n / base, 1)])
for col in ["Q1_利用頻度", "Q2_満足度"]:
count(col)
count(col, by="年代")
print(f"{len(rows)}件を集計しました")
上のスクリプトはAIが書く想定のものを、こちらで用意して動作確認した例です。実際にはAIに書かせて、中身を読んで確認するのが良いです。
4. 自由記述を分類する
自由記述の分類は、分類表(コードブック)を先に決めておくのがコツです。カテゴリの定義がないままAIに任せると、実行のたびに分け方が変わります。
# 自由記述(Q3)の分類表
1. 使い方の不満 … 操作が分かりにくい、機能が足りない
2. 料金 … 高い、安い、無料枠の話
3. 正確さ … 間違い、信頼性の話
4. 仕事での活用 … 業務で使っている、使いたい
5. その他
1件に複数当てはまるときは、最も近い1つだけを選ぶ。
最初から全件を回さず、まず一部で試して、人が結果を読み、分類表を直してから全件に広げます。プロンプトは次のようになります(Claude Codeで対話的に使う場合)。
work/responses_clean.csv の Q3_自由記述を、codebook.md のカテゴリで分類してください。
まず回答ID順の先頭50件だけを out/coded_sample.csv に、列 回答ID, カテゴリ, 根拠の一言 で保存。
分類に迷った件は「迷い」列に1を付けてください。全件はまだ処理しないでください。
サンプルを読んで分類表が固まったら、全件をコマンドで回します。Claude Codeは、対話なしで実行する -p オプションと、JSON Schemaで出力の形を指定する --json-schema を使えます。結果は JSON の structured_output に入るので、jq でCSVにできます。
# scripts/coding_schema.json
{"type":"object","properties":{"items":{"type":"array","items":{"type":"object",
"properties":{"id":{"type":"integer"},"category":{"type":"string"},"unsure":{"type":"boolean"}},
"required":["id","category","unsure"]}}},"required":["items"]}
# scripts/run_coding.sh(件数が多いときは100件ずつに分けて、同じコマンドを繰り返す)
set -euo pipefail
mkdir -p work/chunks out/coded
tail -n +2 work/responses_clean.csv | split -l 100 - work/chunks/part_
for f in work/chunks/part_*; do
claude -p "$f は回答ID,性別,年代,Q1_利用頻度,Q2_満足度,Q3_自由記述 の順のCSV(見出し行なし)です。
Q3_自由記述を codebook.md のカテゴリで分類し、回答IDごとに返してください。" \
--output-format json \
--json-schema "$(cat scripts/coding_schema.json)" \
--allowedTools "Read" \
| jq -r '.structured_output.items[] | [.id,.category,.unsure] | @csv' > "out/coded/$(basename "$f").csv"
done
echo "回答ID,カテゴリ,迷い" > out/coded.csv && cat out/coded/*.csv >> out/coded.csv
--allowedTools "Read" は、ファイルの読み取りだけを確認なしで許可する指定です。書き込みや実行は許可していないので、そうした操作の要求は拒否されます。
Codexで同じことをするなら codex exec を使います。既定のサンドボックスは読み取り専用なので、ファイルを書き出させるときは --sandbox workspace-write を付けます。
codex exec --sandbox workspace-write \
"work/responses_clean.csv の Q3_自由記述を codebook.md のカテゴリで分類し、
out/coded.csv に 回答ID,カテゴリ,迷い の列で保存してください。"
分類のぶれを見る方法もあります。同じ50件を2回分類して、結果が食い違った行だけを人が読みます。食い違いが多いカテゴリは、定義があいまいだというサインなので、分類表を直します。
5. レポートの下書きと、数字の照合
レポートの下書きは、集計表と分類結果だけを材料にして書かせます。ChatGPTの実例で「良い感じの文章」を作る力は確かめられていますが、アンケートでは数字の間違いが一番困るので、書かれた数字を機械的に照合する手順を入れます。
out/tables/ の集計表と out/coded.csv だけを根拠に、out/report_draft.md を書いてください。
構成:調査概要/主な結果(3〜5点)/年代別の違い/自由記述から見えた声/まとめ。
数字は表にあるものだけを使い、書き終えたら scripts/check_numbers.py を実行して、
表にない数字が出たら直してください。
# scripts/check_numbers.py(%と「人」の前の数字が、集計表のどこかにあるかを確認)
import re, glob, csv
table_values = set()
for path in glob.glob("out/tables/*.csv"):
for row in csv.reader(open(path, encoding="utf-8")):
table_values.update(row)
draft = open("out/report_draft.md", encoding="utf-8").read()
missing = [m for m in re.findall(r"\d+(?:\.\d+)?(?=%|人)", draft) if m not in table_values]
if missing:
print("表に無い数字:", sorted(set(missing)))
raise SystemExit(1)
print("レポート内の数字はすべて集計表にありました")
簡易的な照合なので、「増えた」「多い」といった解釈が正しいかどうかは見つけられません。数字が表にあることまでを機械に任せ、解釈は人が読みます。
6. グラフは「1枚を確認してから残りを作る」
グラフも、2023年の実例と同じ進め方が使えます。最初の1枚の形・色・文字の大きさを人が確認してから、残りを同じ設定で作らせます。パソコンに入っている日本語フォントをスクリプトで指定できるので、ChatGPTの画面のようにフォントを添付する手間はありません。
out/tables/Q2_満足度.csv から、割合の横棒グラフを1枚だけ out/charts/q2.png に作ってください。
日本語が文字化けしないよう、このパソコンにある日本語フォントを探して指定すること。
文字は大きめ、色は落ち着いた青、値のラベルを付ける。私が確認するまで他のグラフは作らないでください。
確認できたら「q2.png と同じ設定で、他の集計表のグラフも作って」と頼みます。修正してほしいときは、「ラベルが重なっている」のように原因を具体的に書くと直りやすいのは、ChatGPTと同じです。
7. 新しい回答が届いたら
次の回答CSVが届いたら、元データを差し替えて、make_clean.py、aggregate.py、run_coding.sh を順に実行します。レポートだけは、下書きの依頼をやり直し、続きの修正は claude -p "..." --continue で前の会話を引き継ぎます。
- 費用の見積もりが欲しいときは、
--output-format jsonの結果にtotal_cost_usdが入ります。公式ドキュメントは、これは端末側の見積もりで実際の請求とは違うことがあるとしています - Claude Codeを使う費用の考え方は、Claude Codeのトークン節約を3週間実測した結果にまとめています
- 人が必ず見る場所は、分類のサンプル、レポートの数字と解釈、自由記述の引用(個人が特定される言い回しが残っていないか)の3つです
数十件で1回きりのアンケートなら、ここまで組む必要はなく、ChatGPTにファイルを添付するほうが早く終わります。同じ形式のアンケートを繰り返し集計するときに、手順をファイルにして残す価値が出ます。
よくある質問
Q. 無料のChatGPTでもアンケート分析はできますか?
できます。公式ヘルプによると、ファイルのアップロードとデータ分析は無料プランでも使えます。ただし、ファイルのアップロード(無料は1日3ファイル)とデータ分析には、通常のチャットとは別の上限があり、上限に達すると通知が出ます。無料は有料プランより上限が厳しい場合があります。
Q. 大きなファイルはどこまで扱えますか?
公式ヘルプでは、1ファイル512MBまで、CSVや表計算は約50MBまで(1行の大きさによります)とされています。ただし、アップロードできても全体を分析しきれないことがあるので、結果が不完全に見えたら、シートや列を指定するか、ファイルを分けてください。
Q. 個人情報が入ったアンケートを渡してもよいですか?
回答者を特定できる列(氏名・メール・電話番号など)は、外してから渡してください。アップロードしたファイルの学習への利用は、プランや設定によって扱いが異なります。詳しくはOpenAIの公式ヘルプ「Data Usage for Consumer Services FAQ」で確認し、勤務先やアンケートの同意文面のルールにも従ってください。
まとめ
2023年の実例は、アンケート1000人分の集計・考察・グラフ・レポート文章を、ChatGPTとのやり取りだけで進められるというものでした。今のChatGPTでも、表を整えてファイルを添付し、知りたいことと使う列・グラフの種類を具体的に伝える、という進め方は変わりません。
気をつけたいのは、ChatGPTが初回で意図と違う手法やグラフを選ぶことがある点と、分母や無回答の扱いが自分の想定と合っているか、生成されたコードと前提で確かめる点です。一度きりならChatGPT、同じアンケートを繰り返すなら Claude Code や Codex で手順をファイルに残す、と使い分けるのが現実的です。
※上限などの条件は2026年9月29日時点の情報です。最新の内容は公式ヘルプでご確認ください。


