Changelog
0.1.5
New features
Continuous variable support — numeric (float/int) columns are now profiled automatically alongside categorical ones. Each continuous column gets:
A histogram with KDE overlay.
Vertical lines marking the mean (dashed red) and median (dotted orange).
A descriptive-statistics card: mean, median, standard deviation, min, max, Q1 (25th percentile), Q3 (75th percentile), and missing-value count.
Pearson correlation heatmap — when a DataFrame contains two or more continuous columns the default and modern templates add a Pearson correlation heatmap alongside the Cramér’s V heatmap (categorical columns only).
Modern template — alternative static visual style (
template="modern").Custom template support — pass any file-system path to a
.html.j2Jinja2 file; mode (static/interactive) is auto-detected from a tag in the file.Unified renderer — a single
_profile_renderfunction handles all templates;_build_contextproduces one canonical context dict consumed by both static and interactive modes.verboseparameter onprofile()andprepare()— progress visible by default, suppressible viaverbose=False.
Graphics improvements
Applied
sns.set_theme(style="whitegrid", palette="muted")consistently across all charts.All plot functions now use the
fig, ax = plt.subplots()pattern and callplt.close(fig)after saving, eliminating figure memory leaks.Memory-usage bar chart extracted into
_plot_memory_bar().Templates renamed to version-independent
.html.j2names:default.html.j2,modern.html.j2,interactive.html.j2.
Bug fixes
Jinja2
Environmentnow usesautoescape=True— prevents HTML injection viadataset_name.handle_missing_valuesand_automatic_data_conversionsno longer mutate the caller’s DataFrame (operate ondf.copy()).Interactive renderer now detects continuous columns correctly and excludes them from Cramér’s V and Theil’s U.
pd.concatinside correlation loop replaced with list-of-dicts + singlepd.DataFrame(rows)call, eliminating O(n²) memory growth.
Code quality
Replaced
os.pathwithpathlib.Paththroughout.Added type hints to all public and private functions.
Expanded test suite to 83 tests.
0.1.4
out_htmlparameter added toprofile()— specify the output filename instead of always writingreport.html.prepare()default changed fromauto_data_prep='CLM'toauto_data_prep='internal'— built-in conversion used by default, CleverMiner opt-in only.Added
_to_float_codes()helper for Spearman rank correlation encoding in the interactive template.
0.1.3
Interactive report template (credit: Jan Nejedly) —
profile()gainedtemplateparameter; passtemplate='interactive'to use it.handle_missing_values()with 75+ built-in sentinel strings.na_values,na_ignore,keep_default_naoptions._theils_u()— asymmetric uncertainty coefficient for interactive correlation analysis.Updated default template (
default_0_1_3.tem).
0.1.2
prepare()gainedauto_data_prepparameter —'CLM'(default) uses CleverMiner; any other value uses the new built-in_automatic_data_conversions()fallback.
0.1.0
Initial release.
profile()with default template (static HTML, Cramér’s V heatmaps).prepare()via CleverMiner for automatic numeric category ordering.