By MCP Analytics Team | Published , updated
Compare two groups? Find what drives an outcome? Spot a trend? The question decides which statistics fit, so it is the first thing to get right.
The analyses filed under this question. Each card opens the analysis page, where you can run it on a file. Cards marked Coming soon are still being built.
Should I accept this lot?
Which rows do not fit the usual pattern, including in combination, and what makes each stand out.
Do these numbers look fabricated or manipulated?
Which measures rise and fall together, how strongly, and in which direction, with every pair tested.
Every column in your file: its type, what is missing, how its numbers are spread. Plus the fixes worth making before you analyse it.
Is my data normal, and are there outliers?
What distribution does my data follow? Fit and compare candidate distributions with goodness-of-fit tests.
How reliable are these ratings across raters or repeat measurements?
How bad is my missing data and does it bias my results? Missingness patterns, MCAR checks, imputation impact.
Do your survey items hold together as one scale?
How much variance is the measurement system itself.
The data. standard_data_profile_v2.csv, the published sample file for Data profile: 800 rows; columns account_id, monthly_spend, visits, days_open, region, plan, currency, last_note, and more. Sample data, not a customer's.
The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.
import csv
rows = list(csv.DictReader(open("standard_data_profile_v2.csv")))
cols = list(rows[0])
ids = {r["account_id"] for r in rows}
print(len(rows), "rows,", len(cols), "columns,", len(ids), "distinct ids")
for c in cols:
blank = sum(1 for r in rows if not r[c].strip())
if blank:
print(c, "is blank in", blank, "rows", f"({blank / len(rows):.0%})")
days = sorted(float(r["days_open"]) for r in rows)
print("days_open: median", days[len(days) // 2], "largest", days[-1])
800 rows, 9 columns, 800 distinct ids
last_note is blank in 230 rows (29%)
legacy_code is blank in 800 rows (100%)
days_open: median 400.0 largest 9000.0
What it says. There are as many distinct account ids as rows (800), so this is one row per account: a cross-section, not a panel. 1 column is empty in every row and can be dropped. The largest days_open is 9000 days, about 25 years, against a median of 400: a value worth checking before it pulls an average.
What it does not say. A blank is not always missing at random: if notes are left empty mostly for one kind of account, dropping those rows biases what follows. A profile flags such things; it does not decide them.
Run Data profile on this file or your own, or open its stored sample report.
Further reading on the method in the worked example. Each reference was looked up and its authors, title, year and venue confirmed on 30 October 2026.
The stored sample report for Acceptance Sampling Plans. Each analysis has its own report layout; open its page to see what it returns.
Tell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.