Reporting¶
状态:Stable。 导出流程见报告与评分卡。
mars.reporting.MarsProfileReport ¶
Bases: _ReportQuery
数据特征画像与质量评估报告容器。
保存 MarsDataProfiler 已计算的概览、数据质量、统计分布和对比表。
支持查询、Notebook 展示及 Excel、HTML 导出,查询时不重新计算统计。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
overview_table |
DataFrame
|
全量特征概览表。 |
dq_tables |
dict of str to DataFrame
|
数据质量指标趋势表字典。 |
stats_tables |
dict of str to DataFrame
|
统计分布指标趋势表字典。 |
comparison_tables |
dict of str to DataFrame
|
显式请求的当前样本与基准样本对比表。 |
report_meta |
dict of str to Any
|
本次运行的实际参数、计算口径和结构化诊断。 |
Notes
show_overview 与 show_trend 使用 Pandas Styler 显示色带、数据条和 sparkline。
write_excel() 导出带条件格式的电子表格,write_html() 导出离线单文件报告。
示例:
>>> import polars as pl
>>> overview = pl.DataFrame({"feature": ["age"], "missing_rate": [0.0]})
>>> dq_tables = {"missing": pl.DataFrame({"feature": ["age"], "202601": [0.0]})}
>>> report = MarsProfileReport(overview, dq_tables=dq_tables, stats_tables={})
>>> overview_df, dq_dict, stat_dict, comparisons = report.get_profile_data()
>>> overview_df.height
1
search_features ¶
search_features(
query: str = "",
*,
sources: str | list[str] | None = None,
limit: int = 20
) -> list[dict[str, Any]]
按英文标识、显示名、描述和来源检索,同名特征分别返回。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
str
|
在英文 ID、显示名、描述和来源中查找包含此文本的特征,不区分大小写。 默认空字符串匹配全部特征。 |
''
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制;与文本条件取交集,未知来源报错。 |
None
|
limit
|
int
|
非负返回数量上限,默认 20;设为 0 时返回空列表。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
list[dict[str, Any]]
|
按字典顺序返回候选,每项包含 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询文本、来源或数量无效时抛出。 |
示例:
save ¶
将完整报告保存为包含 JSON 清单与 Parquet 表的单个 ZIP 文件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str | Path
|
目标文件路径,通常使用 |
必需 |
overwrite
|
bool
|
是否覆盖已有文件,默认拒绝覆盖。设为 True 时,完整写入临时文件后再原子替换。 |
False
|
Notes
编码失败传播 ValueError;拒绝覆盖传播 FileExistsError;I/O 失败传播 OSError。 失败不会留下可误认为完整报告的半成品。
示例:
describe ¶
get_table ¶
get_table(
name: str,
*,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
limit: int | None = None,
sources: str | list[str] | None = None
) -> ReportFrame
查询已有结果,返回可继续加工且与原表类型一致的 DataFrame。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
|
必需 |
features
|
str | list[str] | None
|
原始英文特征 ID,默认不限制。单特征表匹配 |
None
|
columns
|
list[str] | None
|
返回字段,默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 筛选和排序可使用未返回的列。 |
None
|
filters
|
dict[str, Any] | None
|
字段到标量相等条件或 |
None
|
sort_by
|
str | list[str] | None
|
单个或多个排序字段,默认保留原行序;相同排序键保持原顺序。 |
None
|
descending
|
bool
|
是否按 |
False
|
offset
|
int
|
筛选并排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int | None
|
非负最大行数;0 返回保留列 schema 的空表,None 不限制。 排序配合 limit 实现 Top-K;需要续页计数时使用 limit 为正整数或 None 的 query_page。 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制。含多个特征角色的表匹配任一角色的来源;
与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
ReportFrame
|
查询结果的独立容器;不重新计算指标。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
表名、字段、操作符、来源或分页参数无效时抛出。 |
示例:
query_page ¶
按 get_table 参数取得分页证据、总匹配数及持久引用。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
公共表目录中的表名。 |
必需 |
**query
|
Any
|
get_table 的关键字参数;默认 offset=0、limit=10。 limit 只接受正整数或 None;None 返回 offset 后全部结果且无续页。 零行精确查询使用 get_table(limit=0)。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
limit 不是正整数或 None,或其他 get_table 查询参数无效时抛出。 |
示例:
to_ai_context ¶
to_ai_context(
*,
tables: list[str] | None = None,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
limit: int = 10,
max_chars: int = 16000,
sources: str | list[str] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
queries: dict[str, dict[str, Any]] | None = None
) -> str
查询已计算结果,并在字符预算内生成可回放的 JSON 摘要。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
list[str] | None
|
需要查询的公共表名。默认采用目录的 |
None
|
features
|
str | list[str] | None
|
所有选中表共用的英文特征 ID 条件,默认不限制;匹配规则同 |
None
|
columns
|
list[str] | None
|
所有选中表共用的返回字段,默认保留全部列;宽趋势表可按日期列选择范围。 |
None
|
filters
|
dict[str, Any] | None
|
所有选中表共用的筛选条件,格式同 |
None
|
limit
|
int
|
每表的非负整数行数上限,默认 10;不接受无界的 None。 0 保留空证据、schema、匹配数和查询引用,继续取证定位另给正页长。 |
10
|
max_chars
|
int
|
最终 JSON 的 Unicode 字符预算,默认 16,000,必须至少为 512。 预算包含身份、查询、口径和省略说明,按字符计数,不按 token 计数。 非空查询至少保留一条完整证据;必要说明与证据无法同时容纳时抛出异常。 |
16000
|
sources
|
str | list[str] | None
|
所有选中表共用的来源筛选条件,默认不限制;匹配规则同 |
None
|
sort_by
|
str | list[str] | None
|
所有选中表共用的排序字段,默认保留原行序。 |
None
|
descending
|
bool
|
是否按排序字段降序排列,默认升序。 |
False
|
offset
|
int
|
每表筛选并排序后跳过的行数,默认 0。 |
0
|
queries
|
dict[str, dict[str, Any]] | None
|
表名到 |
None
|
返回:
| 类型 | 描述 |
|---|---|
str
|
标准 JSON 字符串。相同 null 口径存放在表级 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询无效或预算无法同时容纳最小必要说明及非空查询的一条证据时抛出。 |
示例:
get_feature ¶
读取与单个特征相关的已有统计表,并列出无可用行的结果类别。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
feature
|
str
|
原始英文特征 ID;已登记但没有匹配统计行时,
|
必需 |
limit
|
int
|
每表非负最大行数,默认 100;0 保留空表 schema、匹配状态和省略数。
需要更多行时,可用 |
100
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
包含特征身份、元数据、 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
特征不存在或分页参数无效时抛出。 |
示例:
__init__ ¶
__init__(
overview: Union[DataFrame, DataFrame],
dq_tables: Dict[str, Union[DataFrame, DataFrame]],
stats_tables: Dict[str, Union[DataFrame, DataFrame]],
comparison_tables: (
Dict[str, Union[DataFrame, DataFrame]] | None
) = None,
report_meta: Dict[str, Any] | None = None,
feature_metadata: FeatureMetadata | None = None,
business_context: dict[str, Any] | None = None,
) -> None
初始化画像报告容器。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
overview
|
Union[DataFrame, DataFrame]
|
已计算的特征概览宽表,每行对应一个特征。 |
必需 |
dq_tables
|
Dict[str, Union[DataFrame, DataFrame]]
|
指标名到数据质量趋势宽表的映射,分组值或时间段作为列。 |
必需 |
stats_tables
|
Dict[str, Union[DataFrame, DataFrame]]
|
指标名到统计趋势宽表的映射,分组值或时间段作为列。 |
必需 |
comparison_tables
|
Dict[str, Union[DataFrame, DataFrame]] | None
|
字段类型变化与新增类别占比的对比表,默认不包含对比结果。 |
None
|
report_meta
|
Dict[str, Any] | None
|
本次运行的实际参数与诊断,默认使用空字典,不补算缺少的统计。 |
None
|
feature_metadata
|
FeatureMetadata | None
|
以英文特征 ID 为键的业务字典,或包含 |
None
|
business_context
|
dict[str, Any] | None
|
JSON 业务上下文,仅用于解释结果,不改变统计。
标签定义按 |
None
|
get_profile_data ¶
write_excel ¶
write_excel(
path: str = "mars_report.xlsx",
group_ascending: bool = True,
sort_by: Union[str, List[str]] = "total",
sort_ascending: bool = False,
) -> None
导出画像 Excel 报告。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str
|
输出 Excel 文件路径。 |
'mars_report.xlsx'
|
group_ascending
|
bool
|
趋势页分组列的横向排序方向,默认按列名升序排列。 |
True
|
sort_by
|
Union[str, List[str]]
|
趋势页特征行的排序字段,默认按 |
'total'
|
sort_ascending
|
bool
|
是否按 |
False
|
返回:
| 类型 | 描述 |
|---|---|
None
|
写入报告文件,不返回数据。 |
Notes
数值格式沿用实际指标单位;业务文字、身份、分组名和表头按原文保存,
以 = 开头的字符串不会转换为公式。
示例:
>>> import polars as pl
>>> from pathlib import Path
>>> from tempfile import TemporaryDirectory
>>> overview = pl.DataFrame({"feature": ["age"], "missing_rate": [0.0]})
>>> report = MarsProfileReport(overview, dq_tables={}, stats_tables={})
>>> with TemporaryDirectory() as tmp:
... report.write_excel(str(Path(tmp) / "profile.xlsx")) is None
True
write_html ¶
write_html(
path: str = "mars_profile_report.html",
*,
report_name: str = "MARS Data Profile"
) -> None
导出可离线浏览的单文件画像 HTML 报告。
报告包含元数据、概览、数据质量、统计和对比表,支持搜索及按原值排序。 不生成图表,也不重新计算统计。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str
|
输出文件路径,默认写入 |
'mars_profile_report.html'
|
report_name
|
str
|
HTML 页头和浏览器标签页的报告标题,默认使用 |
'MARS Data Profile'
|
返回:
| 类型 | 描述 |
|---|---|
None
|
写入报告文件,不返回数据。 |
Notes
父目录不存在时,底层写入函数抛出 FileNotFoundError;
报告渲染或文件写入失败时抛出 RuntimeError。
show_overview ¶
show_overview(
features: Union[str, List[str]] | None = None,
sort_by: Union[str, List[str]] | None = None,
sort_ascending: bool = False,
*,
columns: list[str] | None = None,
limit: int | None = None,
sources: str | list[str] | None = None
) -> pd.io.formats.style.Styler
展示特征概览宽表,数值单位按真实指标字段定义格式化。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
Union[str, List[str]] | None
|
需要展示的特征名称。若为 |
None
|
sort_by
|
Union[str, List[str]] | None
|
特征行的排序字段。默认按已有的 |
None
|
sort_ascending
|
bool
|
是否按排序字段升序排列,默认降序;也适用于默认排序字段。 |
False
|
columns
|
list[str] | None
|
展示字段。默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 |
None
|
limit
|
int | None
|
排序后的最大展示行数,默认不限制。设为 0 时返回保留列结构的空视图。 |
None
|
sources
|
str | list[str] | None
|
按已有特征来源筛选;来源未知时明确报错。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Styler
|
适合在 Jupyter 环境中直接渲染的样式化概览表。 |
示例:
>>> import polars as pl
>>> overview = pl.DataFrame(
... {
... "feature": ["age"],
... "dtype": ["Int64"],
... "missing_rate": [0.0],
... "zeros_rate": [0.0],
... "unique_rate": [1.0],
... "mode_rate": [0.25],
... }
... )
>>> report = MarsProfileReport(overview, dq_tables={}, stats_tables={})
>>> hasattr(report.show_overview(features="age"), "to_html")
True
show_trend ¶
show_trend(
metric: str,
features: Union[str, List[str]] | None = None,
group_ascending: bool = True,
sort_by: Union[List[str], str] | None = None,
sort_ascending: bool = False,
*,
columns: list[str] | None = None,
limit: int | None = None,
sources: str | list[str] | None = None
) -> pd.io.formats.style.Styler
展示指定指标的分组趋势,数值单位按所属指标定义格式化。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
metric
|
str
|
指标或比较表名称,例如 |
必需 |
features
|
Union[str, List[str]] | None
|
需要展示的特征名称。若为 |
None
|
group_ascending
|
bool
|
分组列或时间切片列的横向排序方向,默认按列名升序。
仅在 |
True
|
sort_by
|
Union[List[str], str] | None
|
表内排序依据,可以是单列或多列列表。 |
None
|
sort_ascending
|
bool
|
是否按 |
False
|
columns
|
list[str] | None
|
展示字段。默认保留全部列并排列分组列;显式指定时保持所列字段及其顺序。 |
None
|
limit
|
int | None
|
排序后的最大展示行数,默认不限制。设为 0 时返回保留列结构的空视图。 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选特征,默认不限制;与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Styler
|
样式化表;文本类型与计算状态保留原值,空查询结果仍可渲染。 对存在未计算状态的展示特征,在标题中列出状态与原因;原值仍在状态表中。 业务分组名称不影响单位;比例展示百分比,AUC、PSI、IV、Lift、WOE 保持数值口径,KS 展示 0–100 点。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
当 |
示例:
>>> import polars as pl
>>> overview = pl.DataFrame({"feature": ["age"], "dtype": ["Int64"], "missing_rate": [0.0]})
>>> trend = pl.DataFrame({"feature": ["age"], "dtype": ["Int64"], "2026-01": [0.0], "total": [0.0]})
>>> report = MarsProfileReport(overview, dq_tables={"missing": trend}, stats_tables={})
>>> hasattr(report.show_trend("missing", features="age"), "to_html")
True
mars.reporting.MarsBinningReport ¶
Bases: _ReportQuery
保存特征区分度、分布稳定性和分箱风险的评估结果。
保存 MarsBinEvaluator 已计算的特征汇总、分箱明细和指标趋势表。
支持查询、Notebook 展示及 Excel、HTML 导出,查询时不重新分箱或计算指标。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
summary_table |
DataFrame
|
特征级汇总评估表。 |
trend_tables |
dict of str to DataFrame
|
指标名到趋势宽表的映射,分组值或时间段作为列。 |
detail_table |
DataFrame
|
分箱明细表。 |
group_col |
str
|
报告对外使用的分组列名;明细中的实际列名见 |
Notes
show_summary 与 show_trend 使用 Pandas Styler 显示指标色带和数据条。write_excel()
和 write_html() 分别生成电子表格和交互式 HTML 报告。
示例:
>>> import polars as pl
>>> summary = pl.DataFrame({"feature": ["age"], "iv": [0.12], "ks": [18.0]})
>>> detail = pl.DataFrame({"feature": ["age"], "bin_index": [0], "count": [100]})
>>> trend_tables = {"psi": pl.DataFrame({"feature": ["age"], "202601": [0.01]})}
>>> report = MarsBinningReport(summary, trend_tables, detail, group_col="month")
>>> report.get_evaluation_data()[0].height
1
summary_table
property
¶
trend_tables
property
¶
detail_table
property
¶
missing_by_day_table
property
¶
返回按日聚合的缺失明细表。
返回:
| 类型 | 描述 |
|---|---|
DataFrame or DataFrame or None
|
若评估流程生成了按日缺失统计,则返回对应表;否则返回 |
示例:
report_meta
property
¶
risk_corr_reference_table
property
¶
返回 RC 参考坏率表。
返回:
| 类型 | 描述 |
|---|---|
DataFrame or DataFrame or None
|
报告生成时保存的 RC 参考表。 |
detail_group_col
property
¶
返回明细表内部使用的分组列名。
返回:
| 类型 | 描述 |
|---|---|
str | None
|
分箱明细表中的真实分组列名。 |
search_features ¶
search_features(
query: str = "",
*,
sources: str | list[str] | None = None,
limit: int = 20
) -> list[dict[str, Any]]
按英文标识、显示名、描述和来源检索,同名特征分别返回。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
str
|
在英文 ID、显示名、描述和来源中查找包含此文本的特征,不区分大小写。 默认空字符串匹配全部特征。 |
''
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制;与文本条件取交集,未知来源报错。 |
None
|
limit
|
int
|
非负返回数量上限,默认 20;设为 0 时返回空列表。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
list[dict[str, Any]]
|
按字典顺序返回候选,每项包含 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询文本、来源或数量无效时抛出。 |
示例:
save ¶
将完整报告保存为包含 JSON 清单与 Parquet 表的单个 ZIP 文件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str | Path
|
目标文件路径,通常使用 |
必需 |
overwrite
|
bool
|
是否覆盖已有文件,默认拒绝覆盖。设为 True 时,完整写入临时文件后再原子替换。 |
False
|
Notes
编码失败传播 ValueError;拒绝覆盖传播 FileExistsError;I/O 失败传播 OSError。 失败不会留下可误认为完整报告的半成品。
示例:
describe ¶
get_table ¶
get_table(
name: str,
*,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
limit: int | None = None,
sources: str | list[str] | None = None
) -> ReportFrame
查询已有结果,返回可继续加工且与原表类型一致的 DataFrame。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
|
必需 |
features
|
str | list[str] | None
|
原始英文特征 ID,默认不限制。单特征表匹配 |
None
|
columns
|
list[str] | None
|
返回字段,默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 筛选和排序可使用未返回的列。 |
None
|
filters
|
dict[str, Any] | None
|
字段到标量相等条件或 |
None
|
sort_by
|
str | list[str] | None
|
单个或多个排序字段,默认保留原行序;相同排序键保持原顺序。 |
None
|
descending
|
bool
|
是否按 |
False
|
offset
|
int
|
筛选并排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int | None
|
非负最大行数;0 返回保留列 schema 的空表,None 不限制。 排序配合 limit 实现 Top-K;需要续页计数时使用 limit 为正整数或 None 的 query_page。 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制。含多个特征角色的表匹配任一角色的来源;
与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
ReportFrame
|
查询结果的独立容器;不重新计算指标。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
表名、字段、操作符、来源或分页参数无效时抛出。 |
示例:
query_page ¶
按 get_table 参数取得分页证据、总匹配数及持久引用。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
公共表目录中的表名。 |
必需 |
**query
|
Any
|
get_table 的关键字参数;默认 offset=0、limit=10。 limit 只接受正整数或 None;None 返回 offset 后全部结果且无续页。 零行精确查询使用 get_table(limit=0)。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
limit 不是正整数或 None,或其他 get_table 查询参数无效时抛出。 |
示例:
to_ai_context ¶
to_ai_context(
*,
tables: list[str] | None = None,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
limit: int = 10,
max_chars: int = 16000,
sources: str | list[str] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
queries: dict[str, dict[str, Any]] | None = None
) -> str
查询已计算结果,并在字符预算内生成可回放的 JSON 摘要。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
list[str] | None
|
需要查询的公共表名。默认采用目录的 |
None
|
features
|
str | list[str] | None
|
所有选中表共用的英文特征 ID 条件,默认不限制;匹配规则同 |
None
|
columns
|
list[str] | None
|
所有选中表共用的返回字段,默认保留全部列;宽趋势表可按日期列选择范围。 |
None
|
filters
|
dict[str, Any] | None
|
所有选中表共用的筛选条件,格式同 |
None
|
limit
|
int
|
每表的非负整数行数上限,默认 10;不接受无界的 None。 0 保留空证据、schema、匹配数和查询引用,继续取证定位另给正页长。 |
10
|
max_chars
|
int
|
最终 JSON 的 Unicode 字符预算,默认 16,000,必须至少为 512。 预算包含身份、查询、口径和省略说明,按字符计数,不按 token 计数。 非空查询至少保留一条完整证据;必要说明与证据无法同时容纳时抛出异常。 |
16000
|
sources
|
str | list[str] | None
|
所有选中表共用的来源筛选条件,默认不限制;匹配规则同 |
None
|
sort_by
|
str | list[str] | None
|
所有选中表共用的排序字段,默认保留原行序。 |
None
|
descending
|
bool
|
是否按排序字段降序排列,默认升序。 |
False
|
offset
|
int
|
每表筛选并排序后跳过的行数,默认 0。 |
0
|
queries
|
dict[str, dict[str, Any]] | None
|
表名到 |
None
|
返回:
| 类型 | 描述 |
|---|---|
str
|
标准 JSON 字符串。相同 null 口径存放在表级 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询无效或预算无法同时容纳最小必要说明及非空查询的一条证据时抛出。 |
示例:
get_feature ¶
读取与单个特征相关的已有统计表,并列出无可用行的结果类别。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
feature
|
str
|
原始英文特征 ID;已登记但没有匹配统计行时,
|
必需 |
limit
|
int
|
每表非负最大行数,默认 100;0 保留空表 schema、匹配状态和省略数。
需要更多行时,可用 |
100
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
包含特征身份、元数据、 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
特征不存在或分页参数无效时抛出。 |
示例:
__init__ ¶
__init__(
summary_table: Union[DataFrame, DataFrame],
trend_tables: Dict[str, Union[DataFrame, DataFrame]],
detail_table: Union[DataFrame, DataFrame],
group_col: str | None = None,
detail_group_col: str | None = None,
feature_data_source: Dict[str, str] | None = None,
dt_col: str | None = None,
missing_by_day_table: (
Union[DataFrame, DataFrame] | None
) = None,
risk_corr_reference_table: (
Union[DataFrame, DataFrame] | None
) = None,
report_meta: Dict[str, Any] | None = None,
feature_metadata: FeatureMetadata | None = None,
business_context: dict[str, Any] | None = None,
) -> None
初始化报告容器。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
summary_table
|
Union[DataFrame, DataFrame]
|
已计算的特征级汇总表;多目标报告按目标和特征分别汇总。 |
必需 |
trend_tables
|
Dict[str, Union[DataFrame, DataFrame]]
|
指标名到趋势宽表的映射,只提供已计算的指标,不补算缺少的表。 |
必需 |
detail_table
|
Union[DataFrame, DataFrame]
|
按目标、特征、分组和箱保存的明细表,供查询、绘图和导出复用。 |
必需 |
group_col
|
str | None
|
报告对外使用的分组列名,例如 |
None
|
detail_group_col
|
str | None
|
明细表内部实际使用的分组列名。未显式传入时默认沿用 |
None
|
feature_data_source
|
Dict[str, str] | None
|
旧版来源参数,格式为特征 ID 到数据源的映射,默认不额外登记来源。
与 |
None
|
dt_col
|
str | None
|
评估时使用的原始日期列名,默认不指定。绘图所需日期范围从报告元数据读取。 |
None
|
missing_by_day_table
|
Union[DataFrame, DataFrame] | None
|
按自然日统计的原始缺失率宽表,默认不包含。 |
None
|
risk_corr_reference_table
|
Union[DataFrame, DataFrame] | None
|
报告内部保存的 RC 参考坏率表,供图表与明细复用同一口径。 |
None
|
report_meta
|
Dict[str, Any] | None
|
本次评估的实际参数、目标、分箱来源、指标口径和诊断,默认使用空字典。 |
None
|
feature_metadata
|
FeatureMetadata | None
|
以英文特征 ID 为键的业务字典,或含 |
None
|
business_context
|
dict[str, Any] | None
|
JSON 业务上下文,仅用于解释结果,不改变统计。
多标签定义按 |
None
|
get_evaluation_data ¶
get_evaluation_data() -> Tuple[
Union[pl.DataFrame, pd.DataFrame],
Dict[str, Union[pl.DataFrame, pd.DataFrame]],
Union[pl.DataFrame, pd.DataFrame],
]
返回报告中已计算的汇总、趋势和分箱明细。
返回:
| 类型 | 描述 |
|---|---|
tuple
|
依次返回 |
示例:
write_excel ¶
导出分箱评估 Excel 报告。
raw 与 binned 复用各引擎的同一 22 列模板,主展示统一为分箱 KS(0~100 点)。
导出副本的 ks 按特征、目标和实际分组取 max(detail.ks_bin),供 KS 与
综合指标透视读取;最终汇总使用对应 Total 的分箱 KS,最终 KS 趋势只保留首个目标。
综合指标保留模板的 average 聚合,全部箱级 KS 未定义的组保持空值。
原报告的 ks、逐箱 ks_bin、元数据和计算状态保持原样,不重新拟合或评估。
口径说明分别记录源报告的 ks_method 与导出的 binned 口径;raw 诊断仍属于源报告。
openpyxl 不计算公式或刷新透视缓存,透视由原生 Excel 打开后刷新。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str
|
输出 Excel 文件路径。 |
'mars_bin_report.xlsx'
|
engine
|
str
|
Excel 写入引擎,默认使用 |
'openpyxl'
|
返回:
| 类型 | 描述 |
|---|---|
None
|
写入报告文件,不返回数据。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
当 |
RuntimeError
|
当底层 Excel 写入流程失败时抛出。 |
示例:
>>> import polars as pl
>>> from mars.analysis import profile_risk
>>> from pathlib import Path
>>> from tempfile import TemporaryDirectory
>>> data = pl.DataFrame({"age": [20, 25, 30, 35], "target": [0, 1, 0, 1]})
>>> report = profile_risk(
... data, target="target", features=["age"], method="quantile", n_bins=2,
... ).report
>>> with TemporaryDirectory() as tmp:
... report.write_excel(str(Path(tmp) / "report.xlsx"), engine="openpyxl") is None
True
write_html ¶
write_html(
path: str = "mars_bin_report.html",
*,
report_name: str = "MARS Evaluation Report",
max_plots: int = 500,
chart_embed_mode: Literal[
"auto", "inline", "asset"
] = "auto",
sort_by: str = "iv",
ascending: bool = False,
include_summary: bool = True,
include_trends: bool = True,
include_detail: bool = True,
include_charts: bool = True,
include_total: bool = True
) -> None
导出支持页面切换和大规模图表懒加载的交互式 HTML 报告。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str
|
输出 HTML 文件路径。 |
'mars_bin_report.html'
|
report_name
|
str
|
HTML 页面标题和报告名称。 |
'MARS Evaluation Report'
|
max_plots
|
int
|
每个 target 的图表区域最多展示的特征数量,默认 500。 |
500
|
chart_embed_mode
|
Literal['auto', 'inline', 'asset']
|
图表图片嵌入模式。默认 |
'auto'
|
sort_by
|
str
|
图表特征与汇总视图的排序指标,默认按 |
'iv'
|
ascending
|
bool
|
是否按 |
False
|
include_summary
|
bool
|
是否包含汇总表区域,默认包含。 |
True
|
include_trends
|
bool
|
是否包含已生成的指标趋势区域,默认包含。 |
True
|
include_detail
|
bool
|
是否生成 Grouped Pivot 分箱明细区域及其导航、控件和数据。 默认生成;不影响原报告明细、公共查询或图表内部读取明细。 |
True
|
include_charts
|
bool
|
是否生成原生趋势图区域,默认生成,与 |
True
|
include_total
|
bool
|
是否在风险图中显示 Total 面板,默认显示;不改变全局统计或 RC 基准。 |
True
|
返回:
| 类型 | 描述 |
|---|---|
None
|
写入报告文件,不返回数据。 |
示例:
>>> import polars as pl
>>> from pathlib import Path
>>> from tempfile import TemporaryDirectory
>>> report = MarsBinningReport(pl.DataFrame({"feature": ["age"], "iv": [0.1]}), {}, pl.DataFrame())
>>> with TemporaryDirectory() as tmp:
... path = Path(tmp) / "report.html"
... report.write_html(str(path), include_charts=False)
... path.exists()
True
build_risk_trend_figures ¶
build_risk_trend_figures(
features: str | List[str] | None = None,
*,
target: str | List[str] | None = None,
risk_corr_baseline: RiskCorrBaseline | None = None,
show_risk: Literal["count", "amt", "both"] = "both",
include_total: bool = True,
sort_by: str = "iv",
ascending: bool = False,
max_plots: int = 20,
dpi: int = 150
) -> list[Figure]
构建风险趋势图对象。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
str | List[str] | None
|
需要绘图的特征名称。传入 |
None
|
target
|
str | List[str] | None
|
多目标报告下需要生成的目标列名。传入 |
None
|
risk_corr_baseline
|
RiskCorrBaseline | None
|
绘图使用的 RC 基准。默认沿用报告保存的口径,未保存时使用 |
None
|
show_risk
|
Literal['count', 'amt', 'both']
|
风险线展示模式,分别表示件数口径、金额口径和双线同屏。 |
'both'
|
include_total
|
bool
|
是否显示 Total 面板;不改变全局统计或 RC 基准。 |
True
|
sort_by
|
str
|
未显式指定 |
'iv'
|
ascending
|
bool
|
是否按 |
False
|
max_plots
|
int
|
未显式指定 |
20
|
dpi
|
int
|
设置到返回 figure 上的图像分辨率。 |
150
|
返回:
| 类型 | 描述 |
|---|---|
list[Figure]
|
Matplotlib 图对象列表。调用方负责在不再使用后关闭 figure。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
当报告明细为空、分组列缺失、目标不存在或风险线模式无效时抛出。 |
示例:
save_risk_trend_images ¶
save_risk_trend_images(
output_dir: str | Path,
features: str | List[str] | None = None,
*,
target: str | List[str] | None = None,
image_format: Literal["svg", "png"] = "svg",
filename_prefix: str = "risk_trend",
overwrite: bool = True,
dpi: int = 150,
risk_corr_baseline: RiskCorrBaseline | None = None,
show_risk: Literal["count", "amt", "both"] = "both",
include_total: bool = True,
sort_by: str = "iv",
ascending: bool = False,
max_plots: int = 20
) -> list[Path]
保存风险趋势图为图片文件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
output_dir
|
str | Path
|
图片输出目录;目录不存在时会自动创建。 |
必需 |
features
|
str | List[str] | None
|
需要绘图的特征名称。传入 |
None
|
target
|
str | List[str] | None
|
多目标报告下需要保存的目标列名。传入 |
None
|
image_format
|
Literal['svg', 'png']
|
输出图片格式,默认 SVG;支持 PNG。 |
'svg'
|
filename_prefix
|
str
|
输出文件名前缀。 |
'risk_trend'
|
overwrite
|
bool
|
当目标文件已存在时是否覆盖。为 |
True
|
dpi
|
int
|
PNG 输出分辨率。 |
150
|
risk_corr_baseline
|
RiskCorrBaseline | None
|
绘图使用的 RC 基准。默认沿用报告保存的口径,未保存时使用 |
None
|
show_risk
|
Literal['count', 'amt', 'both']
|
风险线展示模式,分别表示件数口径、金额口径和双线同屏。 |
'both'
|
include_total
|
bool
|
是否显示 Total 面板;不改变全局统计或 RC 基准。 |
True
|
sort_by
|
str
|
未显式指定 |
'iv'
|
ascending
|
bool
|
是否按 |
False
|
max_plots
|
int
|
未显式指定 |
20
|
返回:
| 类型 | 描述 |
|---|---|
list[Path]
|
已写出的图片路径列表。 |
引发:
| 类型 | 描述 |
|---|---|
FileExistsError
|
当 |
ValueError
|
当图像格式、报告明细、分组列或目标参数无效时抛出。 |
示例:
render_risk_trends_html ¶
render_risk_trends_html(
features: str | List[str] | None = None,
*,
target: str | List[str] | None = None,
image_format: Literal["svg", "png"] = "svg",
embed_mode: Literal["inline", "asset"] = "inline",
output_dir: str | Path | None = None,
relative_to: str | Path | None = None,
include_title: bool = True,
include_caption: bool = True,
return_figures: bool = False,
dpi: int = 150,
filename_prefix: str = "risk_trend",
overwrite: bool = True,
risk_corr_baseline: RiskCorrBaseline | None = None,
show_risk: Literal["count", "amt", "both"] = "both",
include_total: bool = True,
sort_by: str = "iv",
ascending: bool = False,
max_plots: int = 20
) -> MarsHtmlRenderResult
渲染可嵌入外部 HTML 报告的风险趋势图片段。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
str | List[str] | None
|
需要渲染的特征名称。传入 |
None
|
target
|
str | List[str] | None
|
多目标报告下需要渲染的目标列名。传入 |
None
|
image_format
|
Literal['svg', 'png']
|
图片格式。 |
'svg'
|
embed_mode
|
Literal['inline', 'asset']
|
HTML 嵌入模式。 |
'inline'
|
output_dir
|
str | Path | None
|
图片输出目录, |
None
|
relative_to
|
str | Path | None
|
asset 模式下计算 |
None
|
include_title
|
bool
|
是否在片段中包含标题。 |
True
|
include_caption
|
bool
|
是否为每张图包含 target 和 feature 说明。 |
True
|
return_figures
|
bool
|
是否在结果中返回 Matplotlib figure。为 |
False
|
dpi
|
int
|
PNG 输出分辨率。 |
150
|
filename_prefix
|
str
|
asset 模式下的输出文件名前缀。 |
'risk_trend'
|
overwrite
|
bool
|
asset 模式下目标文件已存在时是否覆盖。 |
True
|
risk_corr_baseline
|
RiskCorrBaseline | None
|
绘图使用的 RC 基准。默认沿用报告保存的口径,未保存时使用 |
None
|
show_risk
|
Literal['count', 'amt', 'both']
|
风险线展示模式,分别表示件数口径、金额口径和双线同屏。 |
'both'
|
include_total
|
bool
|
是否显示 Total 面板;不改变全局统计或 RC 基准。 |
True
|
sort_by
|
str
|
未显式指定 |
'iv'
|
ascending
|
bool
|
是否按 |
False
|
max_plots
|
int
|
未显式指定 |
20
|
返回:
| 类型 | 描述 |
|---|---|
MarsHtmlRenderResult
|
HTML 片段、写出的资产路径和可选 figure 列表。 |
引发:
| 类型 | 描述 |
|---|---|
FileExistsError
|
当 asset 模式下 |
ValueError
|
当嵌入模式、图像格式、报告明细、分组列或目标参数无效时抛出。 |
示例:
plot_risk_trends ¶
plot_risk_trends(
features: str | List[str] | None = None,
*,
target: str | List[str] | None = None,
risk_corr_baseline: RiskCorrBaseline | None = None,
show_risk: Literal["count", "amt", "both"] = "both",
include_total: bool = True,
sort_by: str = "iv",
ascending: bool = False,
max_plots: int = 20,
dpi: int = 150,
return_figures: bool = False
) -> list[Figure] | None
直接展示分箱风险趋势图。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
str | List[str] | None
|
需要绘图的特征名称。传入 |
None
|
target
|
str | List[str] | None
|
多目标报告下需要展示的目标列名。传入 |
None
|
risk_corr_baseline
|
RiskCorrBaseline | None
|
绘图使用的 RC 基准。默认沿用报告保存的口径,未保存时使用 |
None
|
show_risk
|
Literal['count', 'amt', 'both']
|
风险线展示模式,分别表示件数口径、金额口径和双线同屏。 |
'both'
|
include_total
|
bool
|
是否显示 Total 面板;不改变全局统计或 RC 基准。 |
True
|
sort_by
|
str
|
未显式指定 |
'iv'
|
ascending
|
bool
|
是否按 |
False
|
max_plots
|
int
|
未显式指定 |
20
|
dpi
|
int
|
图像显示分辨率。 |
150
|
return_figures
|
bool
|
是否返回 Matplotlib figure。为 |
False
|
返回:
| 类型 | 描述 |
|---|---|
list[Figure] or None
|
默认返回 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
当报告明细为空、分组列缺失或目标不存在时抛出。 |
示例:
show_summary ¶
show_summary(
features: Union[str, List[str]] | None = None,
*,
sort_by: str | list[str] | None = None,
sort_ascending: bool = False,
columns: list[str] | None = None,
limit: int | None = None,
sources: str | list[str] | None = None
) -> pd.io.formats.style.Styler
展示特征级评估汇总表。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
Union[str, List[str]] | None
|
需要展示的特征名称。若为 |
None
|
sort_by
|
str | list[str] | None
|
特征行的排序字段,支持单列或多列;默认保留原顺序,排序先于列投影和行数限制。 |
None
|
sort_ascending
|
bool
|
是否按 |
False
|
columns
|
list[str] | None
|
展示字段。默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 |
None
|
limit
|
int | None
|
排序后的最大展示行数,默认不限制;筛选后或截取后为空时抛出 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选特征,默认不限制;与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Styler
|
样式化后的特征汇总表。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
汇总表为空或指定特征没有匹配行时抛出。 |
示例:
show_trend ¶
show_trend(
metric: str,
features: Union[str, List[str]] | None = None,
group_ascending: bool = True,
sort_by: Union[str, List[str]] = "Total",
sort_ascending: bool = False,
*,
columns: list[str] | None = None,
limit: int | None = None,
sources: str | list[str] | None = None
) -> pd.io.formats.style.Styler
展示指定指标在时间切片或客群分组中的变化。
返回带条件格式的 Pandas Styler,色阶方向按指标设置。 查询只读取已有趋势表,不重新聚合分箱明细。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
metric
|
str
|
已生成的趋势指标名,可用 |
必需 |
features
|
Union[str, List[str]] | None
|
原始英文特征 ID,默认展示所有特征。 |
None
|
group_ascending
|
bool
|
分组或时间切片列的横向排序方向,默认按列名升序。
仅在 |
True
|
sort_by
|
Union[str, List[str]]
|
特征行的排序字段,默认按 |
'Total'
|
sort_ascending
|
bool
|
是否按 |
False
|
columns
|
list[str] | None
|
展示字段。默认保留全部列并排列分组列;显式指定时保持所列字段及其顺序。 |
None
|
limit
|
int | None
|
排序后的最大展示行数,默认不限制;筛选后或截取后为空时抛出 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选特征,默认不限制;与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Styler
|
可在 Jupyter Notebook 中显示的样式化趋势表。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
指标、查询字段或来源无效,或查询结果为空时抛出。 |
示例:
mars.reporting.MarsHtmlRenderResult
dataclass
¶
mars.reporting.ProfileData ¶
Bases: NamedTuple
汇总画像报告的概览、趋势和对比表。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
overview |
DataFrame
|
特征概览宽表。 |
dq_trends |
dict of str to DataFrame
|
数据质量指标的趋势宽表字典。 |
stats_trends |
dict of str to DataFrame
|
统计分布指标的趋势宽表字典。 |
comparisons |
dict of str to DataFrame
|
字段类型变化(schema drift)与新增类别占比(unseen rate)的对比表字典。 |
示例:
>>> import polars as pl
>>> data = ProfileData(
... overview=pl.DataFrame(), dq_trends={}, stats_trends={}, comparisons={}
... )
>>> data.dq_trends
{}
mars.reporting.Report ¶
Bases: Protocol
供外部程序查询、引用和保存统计结果的公共报告契约。
报告按表名提供已计算结果,无需原始数据或特定分析器。 保存后的持久身份与查询参数可用于跨进程回放证据。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
report_id |
str
|
持久产物标识,区别于 Agent 会话登记句柄。 |
format_version |
int
|
当前文件格式版本。 |
report_type |
str
|
分析报告类型。 |
示例:
get_table ¶
get_table(
name: str,
*,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
limit: int | None = None,
sources: str | list[str] | None = None
) -> ReportFrame
筛选、排序、选列并分页,返回与原表后端一致的独立容器。
get_feature ¶
读取单特征元数据和关联表;limit=0 保留空表结构与省略计数。
search_features ¶
search_features(
query: str = "",
*,
sources: str | list[str] | None = None,
limit: int = 20
) -> list[dict[str, Any]]
按文本和来源查找特征,返回英文 ID 及业务元数据,默认最多 20 项。
query_page ¶
取得分页计数与持久引用;limit 默认 10,只接受正整数或 None。
to_ai_context ¶
to_ai_context(
*,
tables: list[str] | None = None,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
limit: int = 10,
max_chars: int = 16000,
sources: str | list[str] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
queries: dict[str, dict[str, Any]] | None = None
) -> str
按 Unicode 字符预算生成 JSON 证据;零行查询保留可回放引用。
mars.reporting.ReportSnapshot ¶
Bases: _ReportQuery
保存公共统计表及其解释信息的独立报告快照。
可查询、分页、生成 AI 上下文和导出文件,无需原始样本或分析会话。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
dict[str, ReportFrame]
|
公共表名到 Pandas/Polars 统计表的映射,构造时复制容器及 Pandas object 列中的可变值。 |
必需 |
description
|
dict[str, Any]
|
|
必需 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
描述不符合契约或表目录与传入统计表不一致。 |
Notes
快照只恢复已保存的统计,不重建分箱器、模型或拟合状态,也不重算新样本。 查询保留原表后端;画像和分箱的历史表会在内存中补齐身份列。
示例:
search_features ¶
search_features(
query: str = "",
*,
sources: str | list[str] | None = None,
limit: int = 20
) -> list[dict[str, Any]]
按英文标识、显示名、描述和来源检索,同名特征分别返回。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
str
|
在英文 ID、显示名、描述和来源中查找包含此文本的特征,不区分大小写。 默认空字符串匹配全部特征。 |
''
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制;与文本条件取交集,未知来源报错。 |
None
|
limit
|
int
|
非负返回数量上限,默认 20;设为 0 时返回空列表。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
list[dict[str, Any]]
|
按字典顺序返回候选,每项包含 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询文本、来源或数量无效时抛出。 |
示例:
save ¶
将完整报告保存为包含 JSON 清单与 Parquet 表的单个 ZIP 文件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str | Path
|
目标文件路径,通常使用 |
必需 |
overwrite
|
bool
|
是否覆盖已有文件,默认拒绝覆盖。设为 True 时,完整写入临时文件后再原子替换。 |
False
|
Notes
编码失败传播 ValueError;拒绝覆盖传播 FileExistsError;I/O 失败传播 OSError。 失败不会留下可误认为完整报告的半成品。
示例:
get_table ¶
get_table(
name: str,
*,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
limit: int | None = None,
sources: str | list[str] | None = None
) -> ReportFrame
查询已有结果,返回可继续加工且与原表类型一致的 DataFrame。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
|
必需 |
features
|
str | list[str] | None
|
原始英文特征 ID,默认不限制。单特征表匹配 |
None
|
columns
|
list[str] | None
|
返回字段,默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 筛选和排序可使用未返回的列。 |
None
|
filters
|
dict[str, Any] | None
|
字段到标量相等条件或 |
None
|
sort_by
|
str | list[str] | None
|
单个或多个排序字段,默认保留原行序;相同排序键保持原顺序。 |
None
|
descending
|
bool
|
是否按 |
False
|
offset
|
int
|
筛选并排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int | None
|
非负最大行数;0 返回保留列 schema 的空表,None 不限制。 排序配合 limit 实现 Top-K;需要续页计数时使用 limit 为正整数或 None 的 query_page。 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制。含多个特征角色的表匹配任一角色的来源;
与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
ReportFrame
|
查询结果的独立容器;不重新计算指标。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
表名、字段、操作符、来源或分页参数无效时抛出。 |
示例:
query_page ¶
按 get_table 参数取得分页证据、总匹配数及持久引用。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
公共表目录中的表名。 |
必需 |
**query
|
Any
|
get_table 的关键字参数;默认 offset=0、limit=10。 limit 只接受正整数或 None;None 返回 offset 后全部结果且无续页。 零行精确查询使用 get_table(limit=0)。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
limit 不是正整数或 None,或其他 get_table 查询参数无效时抛出。 |
示例:
to_ai_context ¶
to_ai_context(
*,
tables: list[str] | None = None,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
limit: int = 10,
max_chars: int = 16000,
sources: str | list[str] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
queries: dict[str, dict[str, Any]] | None = None
) -> str
查询已计算结果,并在字符预算内生成可回放的 JSON 摘要。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
list[str] | None
|
需要查询的公共表名。默认采用目录的 |
None
|
features
|
str | list[str] | None
|
所有选中表共用的英文特征 ID 条件,默认不限制;匹配规则同 |
None
|
columns
|
list[str] | None
|
所有选中表共用的返回字段,默认保留全部列;宽趋势表可按日期列选择范围。 |
None
|
filters
|
dict[str, Any] | None
|
所有选中表共用的筛选条件,格式同 |
None
|
limit
|
int
|
每表的非负整数行数上限,默认 10;不接受无界的 None。 0 保留空证据、schema、匹配数和查询引用,继续取证定位另给正页长。 |
10
|
max_chars
|
int
|
最终 JSON 的 Unicode 字符预算,默认 16,000,必须至少为 512。 预算包含身份、查询、口径和省略说明,按字符计数,不按 token 计数。 非空查询至少保留一条完整证据;必要说明与证据无法同时容纳时抛出异常。 |
16000
|
sources
|
str | list[str] | None
|
所有选中表共用的来源筛选条件,默认不限制;匹配规则同 |
None
|
sort_by
|
str | list[str] | None
|
所有选中表共用的排序字段,默认保留原行序。 |
None
|
descending
|
bool
|
是否按排序字段降序排列,默认升序。 |
False
|
offset
|
int
|
每表筛选并排序后跳过的行数,默认 0。 |
0
|
queries
|
dict[str, dict[str, Any]] | None
|
表名到 |
None
|
返回:
| 类型 | 描述 |
|---|---|
str
|
标准 JSON 字符串。相同 null 口径存放在表级 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询无效或预算无法同时容纳最小必要说明及非空查询的一条证据时抛出。 |
示例:
get_feature ¶
读取与单个特征相关的已有统计表,并列出无可用行的结果类别。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
feature
|
str
|
原始英文特征 ID;已登记但没有匹配统计行时,
|
必需 |
limit
|
int
|
每表非负最大行数,默认 100;0 保留空表 schema、匹配状态和省略数。
需要更多行时,可用 |
100
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
包含特征身份、元数据、 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
特征不存在或分页参数无效时抛出。 |
示例:
describe ¶
show_table ¶
write_html ¶
write_excel ¶
mars.reporting.load_report ¶
从单个 .marsreport 文件恢复已保存的公共统计表和语义目录。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str | Path
|
包含 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
ReportSnapshot
|
保留原报告类型、表后端、schema、顺序、索引及持久身份的快照。 无需原始宽表、分箱器或分析会话,也不重新计算统计。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
格式、清单、表或版本无效时抛出。 |
Notes
加载时校验清单、表 schema、行数和列顺序,不支持跨格式版本迁移。 文件访问错误传播 OSError;父目录和路径由调用方管理。
示例:
mars.reporting.snapshot_report ¶
通过公共接口复制完整统计表、语义目录和业务元数据。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
report
|
object
|
实现 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
ReportSnapshot
|
与原对象隔离的快照,保留报告类型、持久身份及来源,不重新计算指标。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
对象不满足契约或目录不完整时抛出。 |
示例:
可携带相关性证据¶
如何查询相关性、保存报告,以及加载后如何恢复子矩阵,见相关性与模型分交叉。
mars.reporting.CorrelationReport ¶
Bases: ReportSnapshot
保存相关矩阵、候选状态和筛选决策的独立报告快照。
load_report() 返回通用快照,可用本模块同名公共函数继续执行矩阵和邻居查询。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
dict[str, Any]
|
候选目录、上三角特征对和筛选记录等已计算结果表。 |
必需 |
description
|
dict[str, Any]
|
与结果表对应的完整语义目录,含方法、候选范围、实际参数和业务元数据。 |
必需 |
示例:
search_features ¶
search_features(
query: str = "",
*,
sources: str | list[str] | None = None,
limit: int = 20
) -> list[dict[str, Any]]
按英文标识、显示名、描述和来源检索,同名特征分别返回。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
str
|
在英文 ID、显示名、描述和来源中查找包含此文本的特征,不区分大小写。 默认空字符串匹配全部特征。 |
''
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制;与文本条件取交集,未知来源报错。 |
None
|
limit
|
int
|
非负返回数量上限,默认 20;设为 0 时返回空列表。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
list[dict[str, Any]]
|
按字典顺序返回候选,每项包含 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询文本、来源或数量无效时抛出。 |
示例:
save ¶
将完整报告保存为包含 JSON 清单与 Parquet 表的单个 ZIP 文件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
str | Path
|
目标文件路径,通常使用 |
必需 |
overwrite
|
bool
|
是否覆盖已有文件,默认拒绝覆盖。设为 True 时,完整写入临时文件后再原子替换。 |
False
|
Notes
编码失败传播 ValueError;拒绝覆盖传播 FileExistsError;I/O 失败传播 OSError。 失败不会留下可误认为完整报告的半成品。
示例:
describe ¶
get_table ¶
get_table(
name: str,
*,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
limit: int | None = None,
sources: str | list[str] | None = None
) -> ReportFrame
查询已有结果,返回可继续加工且与原表类型一致的 DataFrame。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
|
必需 |
features
|
str | list[str] | None
|
原始英文特征 ID,默认不限制。单特征表匹配 |
None
|
columns
|
list[str] | None
|
返回字段,默认保留全部列;显式指定时只返回所列字段,并保持指定顺序。 筛选和排序可使用未返回的列。 |
None
|
filters
|
dict[str, Any] | None
|
字段到标量相等条件或 |
None
|
sort_by
|
str | list[str] | None
|
单个或多个排序字段,默认保留原行序;相同排序键保持原顺序。 |
None
|
descending
|
bool
|
是否按 |
False
|
offset
|
int
|
筛选并排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int | None
|
非负最大行数;0 返回保留列 schema 的空表,None 不限制。 排序配合 limit 实现 Top-K;需要续页计数时使用 limit 为正整数或 None 的 query_page。 |
None
|
sources
|
str | list[str] | None
|
按已登记来源筛选,默认不限制。含多个特征角色的表匹配任一角色的来源;
与 |
None
|
返回:
| 类型 | 描述 |
|---|---|
ReportFrame
|
查询结果的独立容器;不重新计算指标。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
表名、字段、操作符、来源或分页参数无效时抛出。 |
示例:
query_page ¶
按 get_table 参数取得分页证据、总匹配数及持久引用。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
name
|
str
|
公共表目录中的表名。 |
必需 |
**query
|
Any
|
get_table 的关键字参数;默认 offset=0、limit=10。 limit 只接受正整数或 None;None 返回 offset 后全部结果且无续页。 零行精确查询使用 get_table(limit=0)。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
limit 不是正整数或 None,或其他 get_table 查询参数无效时抛出。 |
示例:
to_ai_context ¶
to_ai_context(
*,
tables: list[str] | None = None,
features: str | list[str] | None = None,
columns: list[str] | None = None,
filters: dict[str, Any] | None = None,
limit: int = 10,
max_chars: int = 16000,
sources: str | list[str] | None = None,
sort_by: str | list[str] | None = None,
descending: bool = False,
offset: int = 0,
queries: dict[str, dict[str, Any]] | None = None
) -> str
查询已计算结果,并在字符预算内生成可回放的 JSON 摘要。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tables
|
list[str] | None
|
需要查询的公共表名。默认采用目录的 |
None
|
features
|
str | list[str] | None
|
所有选中表共用的英文特征 ID 条件,默认不限制;匹配规则同 |
None
|
columns
|
list[str] | None
|
所有选中表共用的返回字段,默认保留全部列;宽趋势表可按日期列选择范围。 |
None
|
filters
|
dict[str, Any] | None
|
所有选中表共用的筛选条件,格式同 |
None
|
limit
|
int
|
每表的非负整数行数上限,默认 10;不接受无界的 None。 0 保留空证据、schema、匹配数和查询引用,继续取证定位另给正页长。 |
10
|
max_chars
|
int
|
最终 JSON 的 Unicode 字符预算,默认 16,000,必须至少为 512。 预算包含身份、查询、口径和省略说明,按字符计数,不按 token 计数。 非空查询至少保留一条完整证据;必要说明与证据无法同时容纳时抛出异常。 |
16000
|
sources
|
str | list[str] | None
|
所有选中表共用的来源筛选条件,默认不限制;匹配规则同 |
None
|
sort_by
|
str | list[str] | None
|
所有选中表共用的排序字段,默认保留原行序。 |
None
|
descending
|
bool
|
是否按排序字段降序排列,默认升序。 |
False
|
offset
|
int
|
每表筛选并排序后跳过的行数,默认 0。 |
0
|
queries
|
dict[str, dict[str, Any]] | None
|
表名到 |
None
|
返回:
| 类型 | 描述 |
|---|---|
str
|
标准 JSON 字符串。相同 null 口径存放在表级 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
查询无效或预算无法同时容纳最小必要说明及非空查询的一条证据时抛出。 |
示例:
get_feature ¶
读取与单个特征相关的已有统计表,并列出无可用行的结果类别。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
feature
|
str
|
原始英文特征 ID;已登记但没有匹配统计行时,
|
必需 |
limit
|
int
|
每表非负最大行数,默认 100;0 保留空表 schema、匹配状态和省略数。
需要更多行时,可用 |
100
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, Any]
|
包含特征身份、元数据、 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
特征不存在或分页参数无效时抛出。 |
示例:
show_table ¶
write_html ¶
write_excel ¶
get_matrix ¶
get_related ¶
get_related(
feature: str,
*,
sources: str | list[str] | None = None,
offset: int = 0,
limit: int = 20
) -> pl.DataFrame
查询与中心特征相关的其他特征,按相关系数绝对值降序返回。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
feature
|
str
|
原始候选 ID,不以中文名作为键。 |
必需 |
sources
|
str | list[str] | None
|
仅筛选另一端特征的业务来源,默认不限制;未知来源报错。 |
None
|
offset
|
int
|
排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int
|
最大返回行数,默认 20;0 返回空表。相关系数绝对值相同时保留候选顺序。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
DataFrame
|
有符号相关系数、另一端特征的业务元数据、最终入选状态和实际筛选事件。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
ID、来源或分页参数无效。 |
示例:
show_matrix ¶
用固定 [-1, 1] 色标展示相关矩阵,空值与有效零值分别着色。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
features
|
list[str] | None
|
英文候选 ID 及展示顺序,默认使用全部候选的原顺序。 |
None
|
max_features
|
int
|
最多展示的特征数,默认 30,必须为正整数。 仅展示所选列表的前若干项,省略数量显示在表标题中,不截断快照。 |
30
|
返回:
| 类型 | 描述 |
|---|---|
Any
|
包含英文 ID、显示名和来源的 Pandas Styler,支持 Notebook 展示及 HTML/Excel 导出。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
上限或候选 ID 无效。 |
示例:
mars.reporting.get_correlation_matrix ¶
从已保存的上三角与实际对角值恢复所选特征的相关子矩阵。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
report
|
Report
|
原始相关性报告,或 |
必需 |
features
|
list[str] | None
|
进入相关性阶段的英文候选 ID,决定返回矩阵的行列及顺序。 默认使用全部候选;候选较多时宜显式限定范围。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
DataFrame
|
按请求顺序排列的有符号相关矩阵,不可用值为 NaN。 对角线沿用已保存的实际结果,不补为 1。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
报告类型不符、候选 ID 重复或 ID 未进入相关性阶段时抛出。 |
示例:
mars.reporting.get_related_features ¶
get_related_features(
report: Report,
feature: str,
*,
sources: str | list[str] | None = None,
offset: int = 0,
limit: int = 20
) -> pl.DataFrame
按相关系数绝对值降序返回其他特征及其筛选证据。
来源条件只筛选另一端特征,不限制中心特征;相关系数绝对值相同时保留候选顺序。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
report
|
Report
|
|
必需 |
feature
|
str
|
作为查询中心的英文候选 ID,必须已进入相关性阶段。 |
必需 |
sources
|
str | list[str] | None
|
另一端特征的业务来源,默认不限制;来源未知时报错。 |
None
|
offset
|
int
|
按相关系数绝对值排序后跳过的行数,默认 0,必须为非负整数。 |
0
|
limit
|
int
|
最大返回行数,默认 20,必须为非负整数;0 返回空表。 |
20
|
返回:
| 类型 | 描述 |
|---|---|
DataFrame
|
另一端特征的 ID、显示名、来源、有符号相关系数、最终入选状态及实际淘汰事件。 决策记录来自原筛选过程,不根据相关系数重新生成。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
报告类型、ID、来源或分页无效。 |
示例:
mars.reporting.show_correlation_matrix ¶
show_correlation_matrix(
report: Report,
features: list[str] | None = None,
*,
max_features: int = 30
) -> Any
展示指定数量特征的有符号相关矩阵,使用固定 [-1, 1] 色标。
空值单独着色,有效零值保留为 0,不重新计算相关系数。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
report
|
Report
|
原始相关性报告或加载后的相关性快照。 |
必需 |
features
|
list[str] | None
|
展示候选的英文 ID 及顺序,默认使用全部候选的原顺序。 |
None
|
max_features
|
int
|
最多展示的特征数,默认 30,必须为正整数。 仅展示所选列表的前若干项,省略数量显示在表标题中,不截断原报告。 |
30
|
返回:
| 类型 | 描述 |
|---|---|
Any
|
可在 Notebook 中显示的 Pandas Styler,也可调用 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
上限非正整数或矩阵查询无效。 |
示例:
模型分交叉报告¶
从 mars.analysis 导入 ScoreCrossReport,准确签名见 Analysis API。
如何导出报告、保存后回放规则,见模型分交叉指南。