records-analyser
Profiles structured data files and returns row counts, column statistics, schema inference, missing value counts, and sample rows.
Part of the analyser family.
Install
pip install records-analyser
Requires Python 3.11+.
Usage
Python
from records_analyser import RecordsAnalyser
result = RecordsAnalyser().analyse("survey.csv")
profile = result["profile"]
print(f"Rows: {profile['rows']}, Columns: {profile['columns']}")
for col, info in profile["column_profiles"].items():
print(f" {col}: {info['type']}, missing={info['missing']}")
CLI
# Human-readable summary
records-analyser analyse data.csv
# SQLite — profiles all tables
records-analyser analyse results.db
# Machine-readable JSON
records-analyser analyse data.xlsx --json
# Start the HTTP server
records-analyser serve --port 8003
HTTP API
curl -X POST http://localhost:8003/analyse \
-F "file=@data.csv"
Supported formats
| Format | Extensions |
|---|---|
| CSV / TSV | .csv .tsv |
| Excel | .xlsx .xls |
| Parquet | .parquet |
| SQLite | .sqlite .db .sqlite3 |
| JSON | .json |
| YAML | .yaml .yml |
| XML | .xml |
JSON and YAML files that look like configuration objects (not arrays of records) include a warning suggesting document-analyser for prose content.
Output
{
"format": "csv",
"file_path": "/path/to/survey.csv",
"file_size": 4096,
"profile": {
"rows": 150,
"columns": 4,
"column_profiles": {
"age": {
"type": "numeric",
"min": 18.0, "max": 72.0, "mean": 34.2,
"median": 32.0, "std": 11.4,
"q25": 25.0, "q75": 42.0,
"missing": 2, "missing_pct": 1.3
},
"country": {
"type": "categorical",
"unique": 12,
"top_values": {"Australia": 45, "USA": 38},
"missing": 0, "missing_pct": 0.0
}
},
"sample": [{"age": 28, "country": "Australia"}]
}
}
SQLite results include a tables key with one profile per table.
The analyser family
Low-level analysis tools. Each accepts files directly and returns structured JSON. Build your own UI or pipeline on top.
| Package | Handles |
|---|---|
| speech-analyser | audio and video files — transcript and speech metrics |
| video-analyser | video files — frames, scenes, and visual quality |
| document-analyser | PDF, DOCX, PPTX, TXT — text and readability |
| code-analyser | source code — style, complexity, and quality metrics |
| records-analyser | CSV, Excel, SQLite, Parquet, JSON — data profiling |
| auto-analyser | any file — detects format and routes to the right tool |
Licence
MIT
Metadata
Release files for records-analyser 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| records_analyser-0.5.0.tar.gz | 91.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| records_analyser-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 101.7 kB
Release files / records_analyser-0.5.0.tar.gz
| Download URL | records_analyser-0.5.0.tar.gz |
|---|---|
| Size | 91.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33160ae9ed02aaff98cad468affd26c926fff0a9f27bdd213fc8954f93ab34be
|
|
BLAKE2b-256 checksum How to use checksums |
9b83d018d69131c4aed293d2b9b8bb8ab4c081ee4acc23d4370010955ecbdb99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Release files / records_analyser-0.5.0-py3-none-any.whl
| Download URL | records_analyser-0.5.0-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4fb8ed0c801f9c42c1b37e45ac340999a067f906e02d76523bc0b10957a7bf17
|
|
BLAKE2b-256 checksum How to use checksums |
18d9bd549d27ad7c8d6691ea9e517232471fec64e7add6931101d520e6c051ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|