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 )