ChatGPT Data Analysis: CSV and Excel Basics (2026)

Upload a CSV to ChatGPT, run real Python, and get a chart you can trust — the profile-first workflow, current limits, and three sanity checks.

You have a CSV and one question, and you do not want to open a Jupyter notebook for it. ChatGPT runs real Python on your uploaded file in a sandbox, draws the chart, and shows you the code it used — but the answer is only as good as the way you ask. This guide is the entry workflow: upload one file, profile the columns first, ask one chart at a time, and run three sanity checks that catch most wrong outputs before you paste them into a deck.

TL;DR

  • ChatGPT’s data analysis (formerly “Advanced Data Analysis” / “Code Interpreter”) executes Python in a sandbox on files you upload, including CSV, XLSX, JSON, and PDF.
  • As of June 2026 it runs on GPT-5.5, the default model since late April 2026. The picker (Instant / Thinking / Pro) controls how much reasoning it spends.
  • Free, Go, Plus, Pro, Business, and Enterprise can all upload files and run code. Free is capped at 3 uploads per day and 25MB per file; paid tiers get roughly 80 files per rolling 3-hour window.
  • Spreadsheets work best under ~50MB. The hard per-file ceiling is 512MB, but large files parse slowly, time out, or get silently sampled.
  • The single highest-leverage habit: profile every file before you analyze it. Most wrong charts trace back to a column type that was read incorrectly.

What this feature actually does

When you upload a file, ChatGPT spins up an isolated Python sandbox (pandas, numpy, matplotlib pre-installed), writes code against your data, runs it, and returns the output plus the chart. You can ask it to show the code, download the chart as a PNG, or export a cleaned CSV. This is different from pasting numbers into the chat: pasted data is only reasoned about by the model, while an uploaded file is computed on by real Python, so the totals are arithmetic, not guesses.

Three terms worth pinning down:

  • The sandbox: a temporary Python environment tied to that chat. It has no internet access and expires after the session goes idle. Export anything you need before you walk away.
  • Data profile: a one-shot summary of columns, types, row count, and nulls. Always your first message, never an analysis.
  • The picker: GPT-5.5 Instant is fine for a quick chart; switch to Thinking when an aggregation is subtle (windowed metrics, joins across sheets, deduplication logic).

Who this is for, and when to use a notebook instead

This is for people who touch CSV or XLSX files occasionally — ops, PMs, founders, students — not full-time analysts. If you live in a notebook every day, this will feel slow.

Reach for ChatGPT when you have a one-off question on a small file: “What’s the conversion rate by channel last month?”, “Plot signups per day”, “Find the rows where revenue is null.” Switch to a real notebook (or BigQuery, or pandas locally) when any of these is true:

SituationWhy ChatGPT is the wrong tool
File over a few hundred thousand rowsSlow parsing, timeouts, or silent sampling
PII or financial data you cannot uploadIt leaves your machine and goes to OpenAI
Must re-run identically on a scheduleThe sandbox is throwaway and non-reproducible
Someone else has to reproduce the exact resultNo version control, no pinned environment

Current limits (as of June 2026)

LimitValue
Hard per-file size512MB
Practical spreadsheet size~50MB before parsing slows or samples
Free-tier file size25MB per file
Free-tier uploads3 per day
Paid-tier uploads~80 files per rolling 3 hours
Text/document token cap2M tokens per file (does not apply to spreadsheets)
Per-user storage25GB
Default modelGPT-5.5 (Instant / Thinking / Pro picker)

The old advice that “the free tier can only reason, never execute” no longer holds — free accounts can upload and run analysis, just on a tight daily quota. If you do this more than a few times a week, Plus ($20/mo) or Go ($8/mo) removes the friction.

Before you start

  • Save a small, clean copy of the file. Drop unrelated sheets, strip identifiers, keep it under ~50MB.
  • Write your specific question in one sentence before you open ChatGPT. Vague uploads produce vague paragraphs.
  • Know the answer roughly. If your back-of-envelope estimate disagrees with the chart by 10x, the chart is wrong, not your gut.

Step by step

  1. Open a new chat and upload one file. Wait for the file chip to show “ready.” One file per question keeps the sandbox state clean.
  2. First message is always the profile, never the analysis. Ask: Describe each column: data type, three sample values, null count, and total row count. Read it carefully. This is where wrong type inference shows up.
  3. Ask one specific chart question. Plot the distribution of revenue for rows where channel = paid. One chart per ask; batched requests blur which code produced which number.
  4. After every chart, demand the code or the totals. Print the sum of revenue grouped by channel. Does it match the chart above? This is your audit trail.
  5. For comparisons, hand it the axes. Plot signups over time, grouped by country, as a line chart, last 90 days only. The more you specify, the less it guesses.
  6. Export before you leave. Download the cleaned CSV and the chart PNG. The sandbox expires; your work goes with it.

Prompts that work

Copy these and swap in your real column names.

Describe each column. Mark which look like dates, numbers,
or categories. Flag any column with more than 5% nulls.

Group rows by month using created_at. Sum revenue per group.
Return a table, not a chart.

Plot daily active users for the last 30 days. X-axis = day,
Y-axis = count. Annotate the highest and lowest days.

Find rows where status = 'failed' and amount > 100.
Show me 10 sample rows and the total count of matches.

A 15-minute first run

  1. Pick a real CSV you already have — under 10MB, no PII.
  2. Profile it (step 2 above). Read the column summary line by line.
  3. Ask one specific chart question, then ask for the Python code.
  4. Cross-check one headline number against the raw file. Open it in Excel, or run wc -l and a quick filter in the terminal. If the numbers match, the chart is trustworthy. If not, find out why before you use it anywhere.

Three sanity checks for every analysis

These catch the overwhelming majority of silent failures:

  1. Row count. Does the profile’s row total match what you expected? Uploading the wrong file (or a sampled subset) is the number-one silent error.
  2. Column types. Are numbers parsed as numbers? A revenue column read as text will produce aggregations that look fine and are completely wrong.
  3. Traceability. For every headline figure, can you point to the exact line of Python that computed it? If you can’t see the code, you can’t trust the number.

Common mistakes

  • Uploading files over ~50MB and assuming the whole thing was read. Large spreadsheets get silently sampled.
  • Skipping the profile and analyzing the wrong columns without noticing.
  • Trusting a chart without checking the axis labels and scale. A log-scale chart can look reasonable and still mislead.
  • Asking “give me insights” instead of one concrete question. Generic prompt in, generic paragraph out.
  • Leaving nulls and duplicates unhandled. Ask explicitly: How were nulls handled in this aggregation?
  • Closing the chat without exporting. The sandbox expires and there is no recovery.

FAQ

  • Does ChatGPT actually run code on my file, or just guess?: It runs real Python in a sandbox on the uploaded file, so aggregations are computed arithmetically. Numbers you paste into the chat are only reasoned about and can be wrong.
  • Can the free tier do this in 2026?: Yes. Free accounts can upload files and run analysis, capped at 3 uploads per day and 25MB per file. Paid tiers (Go, Plus, Pro) lift that to roughly 80 files per 3-hour window.
  • Will it remember my data across chats?: No. Each chat is a fresh sandbox with no internet and no carryover. Projects keep your instructions persistent, but not your uploaded data.
  • What if my file is 500MB?: It is under the 512MB hard limit but will parse slowly or get sampled. Reduce it locally first, or move to a notebook for anything that large.
  • Can it handle an Excel workbook with multiple sheets?: Yes, but name the sheet explicitly — Use the sheet named Q2_2026. By default it picks the first sheet, which is often not the one you want.
  • Can I download the results?: Yes. Ask for the chart as a PNG and the cleaned data as a CSV. You can also ask it to print the Python so you can re-run it yourself next month without burning a session.

Tags: #ChatGPT #Tutorial