Skip to content

Commit

Permalink
Change dict to list of tuples for supporting of arbitrary value types…
Browse files Browse the repository at this point in the history
… in ColumnValueListMetric. (#893)
  • Loading branch information
Liraim authored Dec 12, 2023
1 parent 4984495 commit 618344d
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 32 deletions.
16 changes: 8 additions & 8 deletions src/evidently/metrics/data_quality/column_value_list_metric.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any
from typing import Dict
from typing import List
from typing import Optional
from typing import Tuple

import pandas as pd

Expand All @@ -26,8 +26,8 @@ class ValueListStat(MetricResult):
number_not_in_list: int
share_in_list: float
share_not_in_list: float
values_in_list: Dict[Any, int]
values_not_in_list: Dict[Any, int]
values_in_list: List[Tuple[Any, int]]
values_not_in_list: List[Tuple[Any, int]]
rows_count: int


Expand Down Expand Up @@ -85,8 +85,8 @@ def _calculate_stats(values: list, column: pd.Series) -> ValueListStat:
number_not_in_list=number_not_in_list,
share_in_list=share_in_list,
share_not_in_list=share_not_in_list,
values_in_list=values_in_list,
values_not_in_list=values_not_in_list,
values_in_list=[(k, v) for k, v in values_in_list.items()],
values_not_in_list=[(k, v) for k, v in values_not_in_list.items()],
rows_count=rows_count,
)

Expand Down Expand Up @@ -137,23 +137,23 @@ def _get_table_stat(dataset_name: str, stats: ValueListStat) -> BaseWidgetInfo:
widget=table_data(
title="",
column_names=matched_stat_headers,
data=[(k, v) for k, v in stats.values_in_list.items() if v > 0][:10],
data=[(k, v) for k, v in stats.values_in_list if v > 0][:10],
),
),
TabData(
title="Not found (top-10)",
widget=table_data(
title="",
column_names=matched_stat_headers,
data=[(k, v) for k, v in stats.values_in_list.items() if v <= 0][:10],
data=[(k, v) for k, v in stats.values_in_list if v <= 0][:10],
),
),
TabData(
title="Out of list (top-10)",
widget=table_data(
title="",
column_names=matched_stat_headers,
data=list(stats.values_not_in_list.items())[:10],
data=list(stats.values_not_in_list)[:10],
),
),
]
Expand Down
8 changes: 4 additions & 4 deletions src/evidently/tests/data_quality_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1482,16 +1482,16 @@ def render_html(self, obj: Union[BaseDataQualityValueListMetricsTest, TestValueL
values = metric_result.values
curr_df = pd.concat(
[
pd.DataFrame(metric_result.current.values_in_list.items(), columns=["x", "count"]),
pd.DataFrame(metric_result.current.values_not_in_list.items(), columns=["x", "count"]),
pd.DataFrame(metric_result.current.values_in_list, columns=["x", "count"]),
pd.DataFrame(metric_result.current.values_not_in_list, columns=["x", "count"]),
]
)

if metric_result.reference is not None:
ref_df = pd.concat(
[
pd.DataFrame(metric_result.reference.values_in_list.items(), columns=["x", "count"]),
pd.DataFrame(metric_result.reference.values_in_list.items(), columns=["x", "count"]),
pd.DataFrame(metric_result.reference.values_in_list, columns=["x", "count"]),
pd.DataFrame(metric_result.reference.values_in_list, columns=["x", "count"]),
]
)

Expand Down
40 changes: 20 additions & 20 deletions tests/metrics/data_quality/test_column_value_list_metric.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
number_not_in_list=0,
share_in_list=0,
share_not_in_list=0,
values_in_list={},
values_not_in_list={},
values_in_list=[],
values_not_in_list=[],
rows_count=0,
),
reference=None,
Expand All @@ -46,8 +46,8 @@
number_not_in_list=3,
share_in_list=0,
share_not_in_list=1,
values_in_list={"test": 0},
values_not_in_list={},
values_in_list=[("test", 0)],
values_not_in_list=[],
rows_count=3,
),
reference=None,
Expand All @@ -65,8 +65,8 @@
number_not_in_list=1,
share_in_list=0.75,
share_not_in_list=0.25,
values_in_list={2: 1, 1: 2, 3: 0},
values_not_in_list={},
values_in_list=[(1, 2), (2, 1), (3, 0)],
values_not_in_list=[],
rows_count=4,
),
reference=None,
Expand All @@ -84,8 +84,8 @@
number_not_in_list=3,
share_in_list=0.25,
share_not_in_list=0.75,
values_in_list={"d": 1},
values_not_in_list={"n": 2, "p": 1},
values_in_list=[("d", 1)],
values_not_in_list=[("n", 2), ("p", 1)],
rows_count=4,
),
reference=None,
Expand All @@ -103,8 +103,8 @@
number_not_in_list=2,
share_in_list=0.5,
share_not_in_list=0.5,
values_in_list={2: 2},
values_not_in_list={432: 1, 0: 1},
values_in_list=[(2, 2)],
values_not_in_list=[(0, 1), (432, 1)],
rows_count=4,
),
reference=None,
Expand All @@ -122,17 +122,17 @@
number_not_in_list=0,
share_in_list=1.0,
share_not_in_list=0.0,
values_in_list={"n": 2, "p": 1, "d": 1},
values_not_in_list={},
values_in_list=[("n", 2), ("d", 1), ("p", 1)],
values_not_in_list=[],
rows_count=4,
),
reference=ValueListStat(
number_in_list=4,
number_not_in_list=0,
share_in_list=1.0,
share_not_in_list=0.0,
values_in_list={"n": 2, "p": 1, "d": 1},
values_not_in_list={},
values_in_list=[("n", 2), ("d", 1), ("p", 1)],
values_not_in_list=[],
rows_count=4,
),
),
Expand Down Expand Up @@ -216,8 +216,8 @@ def test_data_quality_value_list_metric_value_errors(
"rows_count": 3,
"share_in_list": 0.3333333333333333,
"share_not_in_list": 0.6666666666666666,
"values_in_list": {"1": 1},
"values_not_in_list": {"2": 1, "3": 1},
"values_in_list": [[1, 1]],
"values_not_in_list": [[2, 1], [3, 1]],
},
"reference": None,
"values": [1],
Expand All @@ -240,17 +240,17 @@ def test_data_quality_value_list_metric_value_errors(
"rows_count": 3,
"share_in_list": 0.0,
"share_not_in_list": 1.0,
"values_in_list": {"10.0": 0, "20.0": 0, "3.5": 0},
"values_not_in_list": {"1": 1, "2": 1, "3": 1},
"values_in_list": [[10.0, 0], [20.0, 0], [3.5, 0]],
"values_not_in_list": [[1, 1], [2, 1], [3, 1]],
},
"reference": {
"number_in_list": 3,
"number_not_in_list": 0,
"rows_count": 3,
"share_in_list": 1.0,
"share_not_in_list": 0.0,
"values_in_list": {"10.0": 1, "20.0": 1, "3.5": 1},
"values_not_in_list": {},
"values_in_list": [[10.0, 1], [20.0, 1], [3.5, 1]],
"values_not_in_list": [],
},
"values": [10.0, 20.0, 3.5],
},
Expand Down

0 comments on commit 618344d

Please sign in to comment.