audit-labs/audit-tools

A collection of scripts, queries, and other goodies you can use in an audit.

clone: git clone https://gitbay.org/audit-labs/audit-tools.git

main: sampling/sampling_tool/reconciliation.py · raw

 1"""Reconciliation output helpers."""
 2
 3from __future__ import annotations
 4
 5import pandas as pd
 6
 7
 8def build_reconciliation(
 9    source_rows: int,
10    blank_id_count: int,
11    duplicate_id_count: int,
12    excluded_rows: int,
13    validated_rows: int,
14    requested_sample_size: int | None,
15    final_sample_size: int,
16) -> pd.DataFrame:
17    unsampled = validated_rows - final_sample_size
18    rows = [
19        ("Source rows", source_rows),
20        ("Rows with blank ID", blank_id_count),
21        ("Duplicate IDs", duplicate_id_count),
22        ("Excluded rows", excluded_rows),
23        ("Validated population rows", validated_rows),
24        (
25            "Requested sample size",
26            "" if requested_sample_size is None else requested_sample_size,
27        ),
28        ("Final sample size", final_sample_size),
29        ("Unsampled population rows", unsampled),
30    ]
31    return pd.DataFrame(rows, columns=["Metric", "Value"])
32
33
34def build_strata_summary(summary_rows: list[dict[str, object]]) -> pd.DataFrame:
35    return pd.DataFrame(
36        summary_rows,
37        columns=[
38            "Stratum",
39            "Population Count",
40            "Requested Sample Count",
41            "Actual Sample Count",
42            "Shortfall",
43        ],
44    )