Report Format — CSV Data-Quality Profile
Render the profiler's JSON into exactly this Markdown structure. Do not add, remove, or reorder sections.
markdown
# Data Profile: <file name>
**Verdict:** <one of the three verdict lines below>
## Overview
| Metric | Value |
|---|---|
| Rows profiled | <rows> (+ " (truncated at 100,000)" if truncated) |
| Columns | <number of columns> |
| Duplicate rows | <duplicate_rows> |
| Ragged rows | <ragged_rows> |
## Columns
| Column | Type | Nulls | Unique | Stats |
|---|---|---|---|---|
| <name> | <type> | <nulls> | <unique> | <stats cell — see rule below> |
## Issues
- <one bullet per detected issue; write "None detected." if empty>Cell and verdict rules
Stats cell:
- numeric columns →
min=<min>, max=<max>, mean=<mean>, median=<median>plus, outliers=<n>when the key is present and > 0 - string columns →
top: <value> (<count>), <value> (<count>), ...fromtop_values - boolean/date/empty columns →
—
Issue bullets (include each only when its condition is true):
nulls > 0in a column → "<column>has missing values (%)"duplicate_rows > 0→ " duplicate rows"ragged_rows > 0→ " rows have an inconsistent number of fields"outlierspresent and > 0 → "<column>has outliers (>3σ from mean)"encoding_fallbackis true → "file is not valid UTF-8; profiled using latin-1 fallback"truncatedis true → "profile limited to the first 100,000 rows"rows == 0→ "file contains no data rows"
Verdict line (pick exactly one, in this priority order):
rows == 0ORragged_rows > 0→⚠️ Needs attention — <short reason>- any other issue bullet present →
🟡 Usable with caveats — <n> issue(s) found - no issue bullets →
✅ Clean — no data-quality issues detected