AI for Data

How to Analyse Survey Results Using ChatGPT

A four-stage method for turning raw survey comments into a themes table you can defend, with numbers you can trace back to individual rows.

Updated 16 August 2026 13 min read

Quick answer

Here is how to analyse survey results using ChatGPT without inventing numbers: shield the data, reshape the export to one row per respondent, read the comments for themes and sentiment in two passes, then make the model run code for every count and check three of them yourself.

You exported 240 open-ended responses, pasted them into a chat, asked for the main themes, and got back five headings so bland they could describe any company on earth. Communication. Workload. Management. That is where most people quit on learning how to analyse survey results using ChatGPT, and it is exactly the wrong moment to stop.

The tool is not the problem. A survey asks you to do two completely different jobs, and requesting both in one message gets neither done properly. Reading comments for meaning is something the model is genuinely good at. Counting how many people said a thing is something it will cheerfully guess at unless you make it stop.

  1. Shield — lock the privacy settings and strip anything that identifies a person.
  2. Shape — cut the export down to one row per respondent.
  3. Read — extract themes, sentiment and quotes in two passes, not one.
  4. Count — make the model run code for every number it reports.

That is the Read-Then-Count Method we teach at PromptPeakAI, and the rest of this guide walks it end to end. By the last section you will have a themes table you can defend in a leadership meeting, with numbers you can trace back to specific rows in your file.

Will this work for you?

Tool needed ChatGPT, plus your survey export in Excel or Google Sheets
Plan Free works for small batches pasted as text; Go or Plus for file uploads and running code; Business or Enterprise if the responses are confidential
Skill level Comfortable with basics
Time First run 20–25 minutes · repeat runs 5–10 minutes

Why ChatGPT Miscounts Your Survey Comments

A language model predicts likely text. It does not tally rows the way a spreadsheet formula does. So when you ask how many people complained about billing, it produces a number that reads like the right answer rather than one it actually derived from your file. That is the single most dangerous behaviour in survey work, because a fabricated percentage is indistinguishable from a real one once it lands on a slide.

The second failure is blandness. Ask for themes with no constraints and you get the safest possible categories, because safe categories fit every dataset. Useless ones fit every dataset too.

✕ Theme you get by default

Communication — one of the top issues raised by respondents.

✓ Theme you get with a depth rule

No advance notice before shift-pattern changes — raised across the operations team.

There is a third failure that catches people out later, usually in a meeting. Ask for representative quotes and you will often get quotes that read beautifully and appear nowhere in your file, because the model composed a tidy version of what several people said. Nobody notices until a director asks who wrote that.

All three problems have the same root: you asked one question and the model answered it in one pass. Everything below is about splitting that into passes it can actually do well. If you want the underlying mechanics, our guide to why ChatGPT invents confident answers covers why this happens at the model level.

How To Analyse Survey Results Using ChatGPT

To analyse survey results using ChatGPT reliably, separate the reading job from the counting job. Let the model interpret language in one pass, then force it to compute frequencies with executed code in a second pass, and verify a sample of those numbers against the raw file before anything reaches a report.

The Read-Then-Count Method 1 · Shield Training off, names stripped 2 · Shape One row per respondent 3 · Read Themes, tone, real quotes 4 · Count Executed code, exact numbers Prepare the file Reading pass Counting pass PromptPeakAI.com

The four stages, and the point where the reading job hands over to the counting job.

Most guides collapse all four stages into one clever prompt. That is why their output looks impressive in a demo and falls apart the moment someone in the room asks where a number came from.

Shield The Data Before You Upload

The first stage of how to analyse survey results using ChatGPT has nothing to do with prompting. Before a single response leaves your spreadsheet, sort out two things: whether your account can train on what you paste, and whether the text still identifies anyone. Most people get the first one wrong, because they assume paying fixes it.

The boundary is not free versus paid

On a personal account, conversations are eligible for model training by default and you opt out yourself. That applies whether you are on the free tier or the most expensive individual plan. Business, Enterprise and Edu workspaces are the ones that never train on your content by default. Per OpenAI’s own documentation on disabling model training, the opt-out lives at Your Profile, then Settings, then Data Controls, then the toggle labelled “Improve the model for everyone”.

📷Screenshot placeholder

ChatGPT Settings with the Data Controls section open and the Improve the model for everyone toggle switched off.

Crop out the account email address, profile photo, and the conversation sidebar.

File: chatgpt-data-controls-training-toggle.png · Alt: "ChatGPT Data Controls settings showing the model training toggle turned off before survey analysis"

If your organisation has a workspace, use it for anything touching staff or customers. If it does not, turn the toggle off and treat that as the minimum bar, not as full protection. Our guide on whether ChatGPT is safe to use at work goes further into what your policy probably already says.

Temporary chats are the other control worth knowing. They stay out of your history, do not feed memory, and are not used for training, which suits a one-off analysis of sensitive feedback. The trade-off is real: close the window and the conversation is gone, so export your themes table before you finish.

Strip identifiers before the file moves

🟢
Safe to upload

Anonymised comments, aggregate scores, your own draft summaries.

🟡
Strip these first

Names, emails, team labels, job titles, client references.

🔴
Never upload

Raw grievance files, health disclosures, whistleblowing reports.

Open-ended answers leak identity in ways closed questions never do. Someone writes “since Priya took over the Leeds rota” and you have just uploaded a named manager, a location and a team. Run a sanitising pass first, on a copy, and check its output before you go anywhere near analysis.

Copy this prompt — anonymisation pass
You are a data protection specialist preparing survey text for analysis.

Below are open-ended survey responses. For each one:
1. Replace every personal name with [Colleague] or [Manager], whichever fits.
2. Replace team names, office locations and client names with [Team], [Site] and [Client].
3. Replace email addresses, phone numbers and ID numbers with [Contact].
4. Change nothing else. Do not reword, shorten, correct or improve the text.

Return the responses in the same order, numbered, and nothing else.

Responses:
[paste your responses here]
✓
Checkpoint

You should now have a copy of the comments with every identifier replaced, and the original wording otherwise untouched.

Shape The Export Into Tidy Rows

Survey platforms export wide. One question with six sub-parts becomes six columns, and a 40-question survey lands as a spreadsheet whose header row runs off the screen. The model has to work out what q4b_other means before it can read a word of the actual feedback, and quite often it works it out wrong.

Wide export versus tidy rows Straight from the survey tool ID q1a q1b ... q40 One question split across many columns After you reshape it ID Score Comment One row per respondent, three columns Delete the columns you are not analysing. All of them. PromptPeakAI.com

The same responses in the shape the survey tool gives you, and the shape the model can actually read.

The fix takes about four minutes in Excel or Google Sheets. Keep a respondent ID, keep the rating column you care about, keep the open-ended column, and delete everything else into a working copy. If your file is messier than that, our walkthrough on how to clean messy data before you analyse it handles the harder cases.

📷Screenshot placeholder

The ChatGPT message box with a survey CSV file attached, showing the file card above the input field.

Crop out the conversation sidebar, browser bookmarks bar, and account name.

File: upload-survey-csv-chatgpt.png · Alt: "Uploading a tidy survey CSV file to ChatGPT for analysis"

Check what your account can do

Uploading a file and running code on it are separate capabilities, and they are not available everywhere. According to ChatGPT’s published plan comparison, the picture as of August 2026 looks like this.

Account typeUpload a fileRuns codeTrains on your content
FreeLimitedLimitedYes, unless you opt out
GoYesYesYes, unless you opt out
Plus or ProYesYesYes, unless you opt out
Business or EnterpriseYesYesNo, not by default

Small batches of a hundred comments or so can simply be pasted as text on any tier. Anything larger wants a file upload and the ability to execute code, which is where the free tier starts to struggle. The same capability question comes up whenever you are analysing a spreadsheet with ChatGPT rather than just chatting about one.

Read The Comments For Real Themes

This is the pass the model is good at, and the pass most people rush. Do it in two moves: discover the themes across the whole dataset first, then tag each response against that fixed list. Asking for both at once produces themes that drift as it works down the file.

1

Discover the themes first

The critical instruction here is a depth rule. Without one you get filing-cabinet labels. With one you get the specific operational issue behind them, which is the thing you can actually fix. The prompt below is built on the Logic System — role, goal, context, format — which is why it runs longer than the one-liners you see elsewhere.

Copy this prompt — theme discovery
You are a senior insights analyst reviewing open-ended survey feedback.

Read every response in the attached file, column [Comment].

Identify between 5 and 7 distinct themes, plus one theme named Other for genuine outliers.

Theme naming rules:
- Each theme name must be a specific phrase of 3 to 5 words.
- Name the underlying issue, not the broad category. "Delayed replies from IT support" is correct. "Communication" is not.
- No two themes may overlap in meaning.

For each theme, return: the theme name, a one-line description, and two verbatim quotes copied exactly from the file with their row numbers.

Do not estimate any counts or percentages yet. Do not invent quotes.

Read the themes it hands back before going further. If two of them clearly describe the same thing, say so and ask it to merge them. This is a thirty-second correction that saves you re-running the whole analysis later.

2

Tag every response once

Copy this prompt — tagging pass
Use only the theme list you produced above. Do not create new themes.

Assign every row in the file to exactly one primary theme. Where a response covers two themes, choose the one it spends the most words on and note the secondary theme separately.

Also assign each row a sentiment of Positive, Neutral or Negative, based on the tone of that response about the theme you assigned it to.

Return a table with these columns: Row number, Assigned theme, Secondary theme, Sentiment.

Every row in the file must appear exactly once. If a response is blank or meaningless, tag it Unusable.
✓
Checkpoint

You should now have one tagged row for every response, with no row missing and no theme invented mid-way.

Check the Other bucket before you move on. If it holds more than about one response in ten, your theme list is too narrow and needs one more category. If it holds almost nothing, the model has been forcing awkward responses into themes where they do not belong, which quietly inflates whichever theme it favoured.

Analyze Survey Data With ChatGPT Sentiment

Sentiment on its own is close to useless. “Sixty per cent negative” tells a leadership team nothing they can act on. The value comes from crossing sentiment against the rating column you kept in stage two, so you can see which themes are dragging low scorers down and which ones your happiest respondents are praising.

The output table you are aiming for Theme Positive Neutral Negative Source row Specific 3 to 5 word theme count count count row number Next theme ...one row per theme, plus Other Every count comes from executed code, never from an estimate. PromptPeakAI.com

The shape of the table your prompts should produce, before any numbers are calculated.

Copy this prompt — cross-tab against ratings
Using the tagged table and the [Score] column in the file, split the respondents into two groups: those who scored 3 or below, and those who scored 4 or above.

For each group separately, list the themes that appear, ordered by how often they appear.

Then answer three questions in plain English, under 60 words each:
1. Which theme separates the two groups most sharply?
2. Which theme appears in both groups, and does the tone differ between them?
3. Which theme appears in fewer than five responses but describes a serious problem?

Cite row numbers for every claim.

Question three matters more than it looks. Broad summaries flatten out the rare, severe comment — the one describing a safety issue or a bullying incident — because it is statistically small. Ask for it explicitly or you will never see it.

Count What The Model Just Read

Now the counting pass. Every number that will end up in front of another human being needs to come from code the model wrote and ran against your file, not from its impression of the file. This is the difference between a defensible report and an embarrassing one.

Where the number came from You ask for a count of one theme It estimates from the text A number that looks right and often is not It writes and runs the code An exact number you can check yourself The instruction that forces the lower path is one sentence long. PromptPeakAI.com

Two routes to the same number, and only one of them survives a follow-up question.

3

Force the count into code

Copy this prompt — verified counts
Write and run code against the uploaded file to calculate the following. Do not estimate any value.

1. Total number of responses, and how many were tagged Unusable.
2. For each theme: the number of responses assigned to it, and that number as a percentage of usable responses.
3. For each theme: the split of Positive, Neutral and Negative.

Round percentages to whole numbers. Show me the code you ran and the table it produced.

If any figure cannot be calculated from the file, write "not available" rather than supplying an estimate.
📷Screenshot placeholder

The expanded analysis panel in ChatGPT showing the code it wrote and executed against the uploaded survey file.

Crop out any internal file paths, session identifiers and the account name.

File: chatgpt-code-execution-survey-counts.png · Alt: "ChatGPT showing executed code that produced verified survey response counts"
4

Spot-check three numbers

Pick your largest theme, your smallest, and one in the middle. Filter your own spreadsheet for each and compare. Three checks take five minutes and they are the difference between confidence and hope.

Do the same with two quotes. Every quote in your report should carry a row number you can jump to, because a quote you cannot locate is a quote you cannot use.

✕ Quote you cannot trace

"Staff feel that internal communication could be significantly improved across departments."

✓ Quote copied from row 87

"Found out about the rota change from a colleague, three days after it was decided."

✓
Checkpoint

You should now have a themes table where every count matches a filter you ran yourself, and every quote points to a real row.

With verified numbers in hand, the writing part is quick. Feed the table back and ask for the narrative — the same approach behind our guides to writing an executive summary and reporting data to non-technical stakeholders.

Copy this prompt — the summary
Using only the verified table above, write a survey summary for a leadership audience.

Structure:
- Headline finding, one sentence.
- Three key findings. Each: what the data shows, one verbatim quote with its row number, and what it implies.
- One risk that appears in few responses but matters.
- Three recommended actions, each naming an owner role and a timeframe.

Rules: use only numbers from the table above. Do not add context you were not given. Under 500 words. Plain professional English, no marketing language.

What This Method Cannot Do

Being straight about the limits is what makes the rest of it trustworthy.

Four things this workflow does not solve, and pretending otherwise will eventually cost you:

  • Judging severity. The model weights a mild grumble and a serious allegation the same way. Reading the negative comments yourself is not optional.
  • Fixing a bad survey. Leading questions and a skewed response rate produce skewed themes. No prompt repairs sampling.
  • Statistical significance. Frequency counts are not significance testing. A theme at 12 per cent of 80 responses is a signal, not a finding.
  • Owning the conclusion. Your name goes on the report. If a number is wrong, the explanation that AI produced it will not help you.

There is also a question worth answering before someone else asks it: should you tell people you used AI on their feedback? For anonymous staff surveys, most HR leads will tell you the honest answer is yes, in one line, alongside a note that a human reviewed every theme. Respondents care far less about the tool than about whether anyone actually read them.

When Survey Analysis Goes Wrong

Almost every failure in this workflow traces back to a missing constraint rather than a limitation of the tool. These are the ones that come up repeatedly.

What you seeWhy it happensThe fix
Themes read like filing cabinet labelsNo depth rule was givenRequire specific 3 to 5 word theme names
Percentages that do not match your fileThe model estimated instead of countingTell it to write and run code
Upload fails or the model loses trackThe export still has dozens of columnsCut to ID, score and comment
Quotes you cannot find anywhereIt paraphrased rather than copyingDemand row numbers beside every quote
Themes change halfway down the fileDiscovery and tagging were mergedSplit them into two separate passes
Every response lands in one themeNo cap was set on theme countAsk for 5 to 7 themes plus Other

When the file is simply too big

Large datasets are the one place where how to analyse survey results using ChatGPT genuinely needs a workaround rather than a better prompt. Every account has a limit on how much text it can hold in view at once, and a few thousand long comments will exceed it. The symptom is subtle: instead of an error, the analysis quietly gets thinner toward the end of the file.

  • Split the export into batches of a few hundred rows.
  • Run the tagging pass on each batch, reusing the theme list you locked during discovery.
  • Combine the tagged output back into one file.
  • Run the counting pass once, across the whole combined set.

The discipline that makes this work is the one behind the whole method: fix the categories first, then let volume flow through them. Related point worth naming — if you run the same file twice and get slightly different themes, that is expected rather than a bug. Lock the theme list after discovery and reuse it, which also lets you compare this quarter against last.

The habit that makes all of this stick is refusing to accept a number you have not traced. Once you have worked through how to analyse survey results using ChatGPT this way a couple of times, the cycle takes about twenty minutes. The natural next step is turning the verified table into charts for the deck, and the same two-pass discipline works on synthesising 360 feedback.

Take it with you

Run the Read-Then-Count Method

  1. Turn off model training under Settings, then Data Controls Strip names, teams and client references from a copy of the comments Cut the export down to respondent ID, score and comment Discover 5 to 7 specific themes, then tag every row against that fixed list Make the model run code for every count, then spot-check three yourself

Questions people ask

QCan I analyse survey results using the free version of ChatGPT?
For small batches pasted as text, yes. The free tier has limited file uploads and limited ability to run code, which is exactly what you need for reliable counts. For a few hundred responses or more, a paid individual tier or a business workspace handles it far better.
QHow do I upload a survey CSV file to ChatGPT?
Use the attachment button beside the message box and select your file, then write your instruction in the same message. Reshape the file first so it has one row per respondent and only the columns you are analysing — wide exports with dozens of sub-question columns cause most upload problems.
QDo I need to know Python to analyse survey data in ChatGPT?
No. You never write or read code. You just instruct the model to calculate counts by running code rather than estimating them, and it handles the rest. Asking it to show you the table it produced is enough verification for most professional reporting.
QDoes ChatGPT make up numbers when analysing survey data?
It can, and this is the main risk. A language model predicts likely text rather than tallying rows, so an unprompted count is often a plausible guess. Instruct it to compute every figure with executed code, then check two or three totals against your own spreadsheet filter.
QHow do I anonymise survey data before uploading it to ChatGPT?
Run a sanitising pass on a copy first, replacing names, email addresses, team labels, office locations and client references with generic markers. Open-ended answers leak identity far more than rating questions do, so read the sanitised output before you analyse it.
QHow do I turn off data training in ChatGPT?
Go to Your Profile, then Settings, then Data Controls, and switch off "Improve the model for everyone". On a personal account this is on by default regardless of what you pay. Business, Enterprise and Edu workspaces never train on your content by default.
QIs ChatGPT better than Excel for analysing survey comments?
They do different jobs. Excel is better at counting and filtering; ChatGPT is better at reading hundreds of open-ended comments and grouping them by meaning. The workflow that actually works uses ChatGPT for the reading and executed code for the counting.
QCan ChatGPT categorise open-ended survey questions into themes?
Yes, and this is where it earns its keep. The quality depends entirely on constraining it: ask for 5 to 7 themes, require theme names of 3 to 5 specific words, and run discovery and tagging as two separate passes so the categories do not drift.
QCan ChatGPT create charts from my survey results?
On the individual paid tiers and business workspaces, yes — it can produce charts from a dataset once the numbers are calculated. Build the charts only after the counts have been verified, otherwise you are turning an estimate into something that looks authoritative.
A

Written by

admin

✓ Last verified 16 August 2026

Keep reading

Leave a Reply

Your email address will not be published. Required fields are marked *