The Truth / scorecard

Analyst: real Python, real reasoning, same old dirty-data ceiling

"It genuinely writes and runs code against your data and shows its reasoning — but it inherits every data-hygiene problem Excel Copilot has, plus a trust problem nobody audits."

7/10

What's genuinely good

  • Actually executes Python against your data with visible chain-of-thought — analysis you can inspect, not vibes
  • Excellent at 'find what's weird in this file' — anomalies, outliers, and patterns you didn't think to ask about
  • Iterates like an analyst: tries an approach, hits a snag, adjusts, runs again — and you can watch it happen
  • Included with the M365 Copilot license and callable from workflows via the M365 Copilot node — Microsoft's own monthly-close pattern is built on it

What sucks

  • Same dirty-data ceiling as Excel Copilot: merged cells, multi-header layouts, and human-formatted sheets degrade it just as badly
  • Trusting the output means reading the code it ran — and in practice nobody does, so wrong joins and silent type coercions sail through
  • Runtime is unpredictable: the same class of question takes one minute or seven depending on how many self-corrections the run needs
  • Overlaps confusingly with Excel's advanced analysis — both run Python on tables, and almost nobody can tell you which to use when

The honest assessment

Analyst does the thing skeptics said language models can’t: instead of guessing at your numbers, it writes Python, runs it against your file, reads the result, and reasons forward from actual computation — chain-of-thought you can scroll through. Ask it to find what’s weird in a 40,000-row export and it will profile the data, hunt for anomalies, and surface things you didn’t know to ask about. That’s its killer use case, and it’s genuinely good at it.

So why a 7? Three ceilings, none of them exotic.

First, the data ceiling — the exact one that caps Excel Copilot. Analyst runs code, but the code is only as good as the model’s understanding of your layout, and merged headers, mixed types, and three-tables-per-sheet confuse it the same way. The Python gives a better failure mode — code that errors visibly beats prose that’s confidently wrong — but it doesn’t repeal the rule that dirty data in means doubtful analysis out.

Second, the trust ceiling. The visible code is the whole integrity story: it’s how you’d catch the join that silently dropped a third of the rows, the date column parsed as text, the average taken over a column including subtotal rows. And in real usage, almost nobody reads it. The transparency is real; the verification culture isn’t. An auditable analysis that nobody audits is, functionally, an unaudited analysis with better PR.

Third, the runtime lottery. Because Analyst iterates — try, fail, adjust, retry — wall-clock time varies wildly between runs on similar questions. Fine for offline work; maddening when someone’s waiting in a meeting.

The workarounds that change the score

  1. Skim the code, every time. Not line-by-line review — sixty seconds checking three things: row counts after each join or filter, whether key columns parsed as the right type, whether the final number comes from the column you meant. This single habit moves Analyst from “plausible answers” to “defensible answers.”
  2. Clean before you ask. One header row, typed columns, no merges, no embedded subtotals. The same toll as Excel Copilot, the same payoff: it routes you to the strong path.
  3. Ask for anomalies first. “Profile this file and tell me what looks wrong” is the best opening prompt — it surfaces the data-quality landmines before they corrupt the analysis you actually came for.
  4. Pick a lane and publish it. A workable house rule: working inside a workbook and want the result in the sheet — Excel advanced analysis; investigating a file or combining sources and want a report — Analyst. The rule matters less than having one; the confusion costs more than either tool’s limits.

What Microsoft won’t tell you

  • The Analyst-versus-Excel-advanced-analysis overlap is unresolved by design — two Python-on-your-data paths, no decision guide. Every org has to write its own, and most just leave users guessing.
  • The chain-of-thought is presented as transparency, but it functions as liability transfer: the receipts were available, so the wrong number that got forwarded is now the forwarder’s problem. Read the code or own the risk.
  • In workflow mode (the M365 Copilot node — Microsoft’s own monthly-close review pattern), the unpredictable runtime means you should treat asynchronous handling as mandatory, not optional.

Bottom line

Analyst is the most honest analytical tool in the Copilot lineup — it shows you exactly what it did, in executable form. The 7 isn’t doubt about the capability; it’s the gap between an inspectable analysis and an inspected one, sitting on top of the same dirty-data tax the whole suite pays. Users who clean their inputs and skim the code get a tireless junior data analyst. Everyone else gets fast numbers of unknown provenance — which they were already getting from Excel, just slower.

← All scorecards