ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.
Can I trust this data? Data quality analyses | MCP Analytics
Question

Can I trust this data?

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.

See a worked example

How the analyses here work

Data quality: prebuilt analyses

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.

Worked example

What does this file look like, and is anything in it suspect before analysis?

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.

Sources

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.

  1. Rubin DB (1976). Inference and missing data. Biometrika. https://doi.org/10.1093/biomet/63.3.581
  2. Hurlbert SH (1984). Pseudoreplication and the design of ecological field experiments. Ecological Monographs. https://doi.org/10.2307/1942661

By MCP Analytics Team. Updated November 2026. Analysis list from the library catalog.

A delivered report from this list

Acceptance Sampling Plans: sample report Open full report →

The stored sample report for Acceptance Sampling Plans. Each analysis has its own report layout; open its page to see what it returns.