Skip to content

Commit 0f50680

Browse files
committed
update renders to support VarDescription class
1 parent ec78726 commit 0f50680

14 files changed

Lines changed: 106 additions & 97 deletions

src/ydata_profiling/report/structure/variables/render_boolean.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import List
22

33
from ydata_profiling.config import Settings
4+
from ydata_profiling.model.var_description.default import VarDescription
45
from ydata_profiling.report.formatters import fmt, fmt_bytesize, fmt_percent
56
from ydata_profiling.report.presentation.core import (
67
Container,
@@ -16,7 +17,7 @@
1617
from ydata_profiling.visualisation.plot import cat_frequency_plot
1718

1819

19-
def render_boolean(config: Settings, summary: dict) -> dict:
20+
def render_boolean(config: Settings, summary: VarDescription) -> dict:
2021
varid = summary["varid"]
2122
n_obs_bool = config.vars.bool.n_obs
2223
image_format = config.plot.image_format
@@ -38,27 +39,27 @@ def render_boolean(config: Settings, summary: dict) -> dict:
3839
[
3940
{
4041
"name": "Distinct",
41-
"value": fmt(summary["n_distinct"]),
42+
"value": fmt(summary.n_distinct),
4243
"alert": "n_distinct" in summary["alert_fields"],
4344
},
4445
{
4546
"name": "Distinct (%)",
46-
"value": fmt_percent(summary["p_distinct"]),
47+
"value": fmt_percent(summary.p_distinct),
4748
"alert": "p_distinct" in summary["alert_fields"],
4849
},
4950
{
5051
"name": "Missing",
51-
"value": fmt(summary["n_missing"]),
52+
"value": fmt(summary.n_missing),
5253
"alert": "n_missing" in summary["alert_fields"],
5354
},
5455
{
5556
"name": "Missing (%)",
56-
"value": fmt_percent(summary["p_missing"]),
57+
"value": fmt_percent(summary.p_missing),
5758
"alert": "p_missing" in summary["alert_fields"],
5859
},
5960
{
6061
"name": "Memory size",
61-
"value": fmt_bytesize(summary["memory_size"]),
62+
"value": fmt_bytesize(summary.memory_size),
6263
"alert": False,
6364
},
6465
],
@@ -67,8 +68,8 @@ def render_boolean(config: Settings, summary: dict) -> dict:
6768

6869
fqm = FrequencyTableSmall(
6970
freq_table(
70-
freqtable=summary["value_counts_without_nan"],
71-
n=summary["n"],
71+
freqtable=summary.value_counts_without_nan,
72+
n=summary.n,
7273
max_number_to_print=n_obs_bool,
7374
),
7475
redact=False,
@@ -89,7 +90,7 @@ def render_boolean(config: Settings, summary: dict) -> dict:
8990
max_unique = config.plot.cat_freq.max_unique
9091

9192
if show and (max_unique > 0):
92-
if isinstance(summary["value_counts_without_nan"], list):
93+
if isinstance(summary.value_counts_without_nan, list):
9394
items.append(
9495
Container(
9596
[
@@ -103,7 +104,7 @@ def render_boolean(config: Settings, summary: dict) -> dict:
103104
name=config.html.style._labels[idx],
104105
anchor_id=f"{varid}cat_frequency_plot_{idx}",
105106
)
106-
for idx, s in enumerate(summary["value_counts_without_nan"])
107+
for idx, s in enumerate(summary.value_counts_without_nan)
107108
],
108109
anchor_id=f"{varid}cat_frequency_plot",
109110
name="Common Values (Plot)",
@@ -114,10 +115,7 @@ def render_boolean(config: Settings, summary: dict) -> dict:
114115
else:
115116
items.append(
116117
Image(
117-
cat_frequency_plot(
118-
config,
119-
summary["value_counts_without_nan"],
120-
),
118+
cat_frequency_plot(config, summary.value_counts_without_nan),
121119
image_format=image_format,
122120
alt="Common Values (Plot)",
123121
name="Common Values (Plot)",

src/ydata_profiling/report/structure/variables/render_categorical.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pandas as pd
44

55
from ydata_profiling.config import Settings
6+
from ydata_profiling.model.var_description.default import VarDescription
67
from ydata_profiling.report.formatters import (
78
fmt,
89
fmt_bytesize,
@@ -27,21 +28,21 @@
2728

2829

2930
def render_categorical_frequency(
30-
config: Settings, summary: dict, varid: str
31+
config: Settings, summary: VarDescription, varid: str
3132
) -> Renderable:
3233
frequency_table = Table(
3334
[
3435
{
3536
"name": "Unique",
36-
"value": fmt_number(summary["n_unique"]),
37+
"value": fmt_number(summary.n_unique),
3738
"hint": help(
3839
"The number of unique values (all values that occur exactly once in the dataset)."
3940
),
4041
"alert": "n_unique" in summary["alert_fields"],
4142
},
4243
{
4344
"name": "Unique (%)",
44-
"value": fmt_percent(summary["p_unique"]),
45+
"value": fmt_percent(summary.p_unique),
4546
"alert": "p_unique" in summary["alert_fields"],
4647
},
4748
],
@@ -54,7 +55,7 @@ def render_categorical_frequency(
5455

5556

5657
def render_categorical_length(
57-
config: Settings, summary: dict, varid: str
58+
config: Settings, summary: VarDescription, varid: str
5859
) -> Tuple[Renderable, Renderable]:
5960
length_table = Table(
6061
[
@@ -117,7 +118,7 @@ def _get_n(value: Union[list, pd.DataFrame]) -> Union[int, List[int]]:
117118

118119

119120
def render_categorical_unicode(
120-
config: Settings, summary: dict, varid: str
121+
config: Settings, summary: VarDescription, varid: str
121122
) -> Tuple[Renderable, Renderable]:
122123
n_freq_table_max = config.n_freq_table_max
123124

@@ -329,7 +330,7 @@ def render_categorical_unicode(
329330
)
330331

331332

332-
def render_categorical(config: Settings, summary: dict) -> dict:
333+
def render_categorical(config: Settings, summary: VarDescription) -> dict:
333334
varid = summary["varid"]
334335
n_obs_cat = config.vars.cat.n_obs
335336
image_format = config.plot.image_format
@@ -356,27 +357,27 @@ def render_categorical(config: Settings, summary: dict) -> dict:
356357
[
357358
{
358359
"name": "Distinct",
359-
"value": fmt(summary["n_distinct"]),
360+
"value": fmt(summary.n_distinct),
360361
"alert": "n_distinct" in summary["alert_fields"],
361362
},
362363
{
363364
"name": "Distinct (%)",
364-
"value": fmt_percent(summary["p_distinct"]),
365+
"value": fmt_percent(summary.p_distinct),
365366
"alert": "p_distinct" in summary["alert_fields"],
366367
},
367368
{
368369
"name": "Missing",
369-
"value": fmt(summary["n_missing"]),
370+
"value": fmt(summary.n_missing),
370371
"alert": "n_missing" in summary["alert_fields"],
371372
},
372373
{
373374
"name": "Missing (%)",
374-
"value": fmt_percent(summary["p_missing"]),
375+
"value": fmt_percent(summary.p_missing),
375376
"alert": "p_missing" in summary["alert_fields"],
376377
},
377378
{
378379
"name": "Memory size",
379-
"value": fmt_bytesize(summary["memory_size"]),
380+
"value": fmt_bytesize(summary.memory_size),
380381
"alert": False,
381382
},
382383
],
@@ -385,8 +386,8 @@ def render_categorical(config: Settings, summary: dict) -> dict:
385386

386387
fqm = FrequencyTableSmall(
387388
freq_table(
388-
freqtable=summary["value_counts_without_nan"],
389-
n=summary["count"],
389+
freqtable=summary.value_counts_without_nan,
390+
n=summary.count,
390391
max_number_to_print=n_obs_cat,
391392
),
392393
redact=config.vars.cat.redact,
@@ -459,7 +460,7 @@ def render_categorical(config: Settings, summary: dict) -> dict:
459460
max_unique = config.plot.cat_freq.max_unique
460461

461462
if show and (max_unique > 0):
462-
if isinstance(summary["value_counts_without_nan"], list):
463+
if isinstance(summary.value_counts_without_nan, list):
463464
string_items.append(
464465
Container(
465466
[
@@ -473,27 +474,25 @@ def render_categorical(config: Settings, summary: dict) -> dict:
473474
name=config.html.style._labels[idx],
474475
anchor_id=f"{varid}cat_frequency_plot_{idx}",
475476
)
476-
if summary["n_distinct"][idx] <= max_unique
477+
if summary.n_distinct[idx] <= max_unique
477478
else HTML(
478479
f"<h4 class='indent'>{config.html.style._labels[idx]}</h4><br />"
479480
f"<em>Number of variable categories passes threshold (<code>config.plot.cat_freq.max_unique</code>)</em>"
480481
)
481-
for idx, s in enumerate(summary["value_counts_without_nan"])
482+
for idx, s in enumerate(summary.value_counts_without_nan)
482483
],
483484
anchor_id=f"{varid}cat_frequency_plot",
484485
name="Common Values (Plot)",
485486
sequence_type="batch_grid",
486487
batch_size=len(config.html.style._labels),
487488
)
488489
)
489-
elif (
490-
len(config.html.style._labels) == 1 and summary["n_distinct"] <= max_unique
491-
):
490+
elif len(config.html.style._labels) == 1 and summary.n_distinct <= max_unique:
492491
string_items.append(
493492
Image(
494493
cat_frequency_plot(
495494
config,
496-
summary["value_counts_without_nan"],
495+
summary.value_counts_without_nan,
497496
),
498497
image_format=image_format,
499498
alt="Common Values (Plot)",

src/ydata_profiling/report/structure/variables/render_common.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
from ydata_profiling.config import Settings
2+
from ydata_profiling.model.var_description.default import VarDescription
23
from ydata_profiling.report.presentation.frequency_table_utils import (
34
extreme_obs_table,
45
freq_table,
56
)
67

78

8-
def render_common(config: Settings, summary: dict) -> dict:
9+
def render_common(config: Settings, summary: VarDescription) -> dict:
910
n_extreme_obs = config.n_extreme_obs
1011
n_freq_table_max = config.n_freq_table_max
1112

1213
template_variables = {
1314
# TODO: with nan
1415
"freq_table_rows": freq_table(
15-
freqtable=summary["value_counts_without_nan"],
16-
n=summary["n"],
16+
freqtable=summary.value_counts_without_nan,
17+
n=summary.n,
1718
max_number_to_print=n_freq_table_max,
1819
),
1920
"firstn_expanded": extreme_obs_table(
20-
freqtable=summary["value_counts_index_sorted"],
21+
freqtable=summary.value_counts_index_sorted,
2122
number_to_print=n_extreme_obs,
22-
n=summary["n"],
23+
n=summary.n,
2324
),
2425
"lastn_expanded": extreme_obs_table(
25-
freqtable=summary["value_counts_index_sorted"][::-1],
26+
freqtable=summary.value_counts_index_sorted[::-1],
2627
number_to_print=n_extreme_obs,
27-
n=summary["n"],
28+
n=summary.n,
2829
),
2930
}
3031

src/ydata_profiling/report/structure/variables/render_complex.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from ydata_profiling.config import Settings
2+
from ydata_profiling.model.var_description.default import VarDescription
23
from ydata_profiling.report.formatters import (
34
fmt,
45
fmt_bytesize,
@@ -15,7 +16,7 @@
1516
from ydata_profiling.visualisation.plot import scatter_complex
1617

1718

18-
def render_complex(config: Settings, summary: dict) -> dict:
19+
def render_complex(config: Settings, summary: VarDescription) -> dict:
1920
varid = summary["varid"]
2021
template_variables = {}
2122
image_format = config.plot.image_format
@@ -32,19 +33,19 @@ def render_complex(config: Settings, summary: dict) -> dict:
3233

3334
table1 = Table(
3435
[
35-
{"name": "Distinct", "value": fmt(summary["n_distinct"])},
36+
{"name": "Distinct", "value": fmt(summary.n_distinct)},
3637
{
3738
"name": "Distinct (%)",
38-
"value": fmt_percent(summary["p_distinct"]),
39+
"value": fmt_percent(summary.p_distinct),
3940
},
40-
{"name": "Missing", "value": fmt(summary["n_missing"])},
41+
{"name": "Missing", "value": fmt(summary.n_missing)},
4142
{
4243
"name": "Missing (%)",
43-
"value": fmt_percent(summary["p_missing"]),
44+
"value": fmt_percent(summary.p_missing),
4445
},
4546
{
4647
"name": "Memory size",
47-
"value": fmt_bytesize(summary["memory_size"]),
48+
"value": fmt_bytesize(summary.memory_size),
4849
},
4950
],
5051
style=config.html.style,

src/ydata_profiling/report/structure/variables/render_count.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from ydata_profiling.config import Settings
2+
from ydata_profiling.model.var_description.default import VarDescription
23
from ydata_profiling.report.formatters import (
34
fmt,
45
fmt_bytesize,
@@ -16,7 +17,7 @@
1617
from ydata_profiling.visualisation.plot import histogram, mini_histogram
1718

1819

19-
def render_count(config: Settings, summary: dict) -> dict:
20+
def render_count(config: Settings, summary: VarDescription) -> dict:
2021
template_variables = render_common(config, summary)
2122
image_format = config.plot.image_format
2223

@@ -34,22 +35,22 @@ def render_count(config: Settings, summary: dict) -> dict:
3435
[
3536
{
3637
"name": "Distinct",
37-
"value": fmt(summary["n_distinct"]),
38+
"value": fmt(summary.n_distinct),
3839
"alert": False,
3940
},
4041
{
4142
"name": "Distinct (%)",
42-
"value": fmt_percent(summary["p_distinct"]),
43+
"value": fmt_percent(summary.p_distinct),
4344
"alert": False,
4445
},
4546
{
4647
"name": "Missing",
47-
"value": fmt(summary["n_missing"]),
48+
"value": fmt(summary.n_missing),
4849
"alert": False,
4950
},
5051
{
5152
"name": "Missing (%)",
52-
"value": fmt_percent(summary["p_missing"]),
53+
"value": fmt_percent(summary.p_missing),
5354
"alert": False,
5455
},
5556
],
@@ -87,7 +88,7 @@ def render_count(config: Settings, summary: dict) -> dict:
8788
},
8889
{
8990
"name": "Memory size",
90-
"value": fmt_bytesize(summary["memory_size"]),
91+
"value": fmt_bytesize(summary.memory_size),
9192
"alert": False,
9293
},
9394
],

0 commit comments

Comments
 (0)