From 91cbaafc91f44ddfe1f456e7b27d592c92281ca4 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Wed, 1 May 2024 17:49:28 +0200 Subject: [PATCH] feat: add `Column.missing_value_count` --- src/safeds/data/tabular/containers/_column.py | 48 ++++++++----------- ..._values.py => test_missing_value_count.py} | 2 +- 2 files changed, 22 insertions(+), 28 deletions(-) rename tests/safeds/data/tabular/containers/_column/{test_count_missing_values.py => test_missing_value_count.py} (87%) diff --git a/src/safeds/data/tabular/containers/_column.py b/src/safeds/data/tabular/containers/_column.py index af8a5e88a..456d54a37 100644 --- a/src/safeds/data/tabular/containers/_column.py +++ b/src/safeds/data/tabular/containers/_column.py @@ -743,6 +743,24 @@ def minimum(self) -> float: raise NonNumericColumnError(f"{self.name} is of type {self._type}.") return self._data.min() + def missing_value_count(self) -> int: + """ + Return the number of missing values in the column. + + Returns + ------- + count: + The number of missing values. + + Examples + -------- + >>> from safeds.data.tabular.containers import Column + >>> column = Column("col_1", [None, 'a', None]) + >>> column.missing_value_count() + 2 + """ + return self._data.isna().sum() + def missing_value_ratio(self) -> float: """ Return the ratio of missing values to the total number of elements in the column. @@ -770,7 +788,7 @@ def missing_value_ratio(self) -> float: """ if self._data.size == 0: raise ColumnSizeError("> 0", "0") - return self._count_missing_values() / self._data.size + return self.missing_value_count() / self._data.size def mode(self) -> list[T]: """ @@ -1010,8 +1028,7 @@ def to_html(self) -> str: -------- >>> from safeds.data.tabular.containers import Column >>> column = Column("test", [1, 2, 3]) - >>> column.to_html() - '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
test
01
12
23
' + >>> html = column.to_html() """ frame = self._data.to_frame() frame.columns = [self.name] @@ -1035,32 +1052,9 @@ def _repr_html_(self) -> str: -------- >>> from safeds.data.tabular.containers import Column >>> column = Column("col_1", ['a', 'b', 'c']) - >>> column._repr_html_() - '
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
col_1
0a
1b
2c
\n
' + >>> html = column._repr_html_() """ frame = self._data.to_frame() frame.columns = [self.name] return frame.to_html(max_rows=self._data.size, max_cols=1, notebook=True) - - # ------------------------------------------------------------------------------------------------------------------ - # Other - # ------------------------------------------------------------------------------------------------------------------ - - def _count_missing_values(self) -> int: - """ - Return the number of null values in the column. - - Returns - ------- - count: - The number of null values. - - Examples - -------- - >>> from safeds.data.tabular.containers import Column - >>> column = Column("col_1", [None, 'a', None]) - >>> column._count_missing_values() - 2 - """ - return self._data.isna().sum() diff --git a/tests/safeds/data/tabular/containers/_column/test_count_missing_values.py b/tests/safeds/data/tabular/containers/_column/test_missing_value_count.py similarity index 87% rename from tests/safeds/data/tabular/containers/_column/test_count_missing_values.py rename to tests/safeds/data/tabular/containers/_column/test_missing_value_count.py index b583fa3bb..f6331484f 100644 --- a/tests/safeds/data/tabular/containers/_column/test_count_missing_values.py +++ b/tests/safeds/data/tabular/containers/_column/test_missing_value_count.py @@ -9,4 +9,4 @@ ) def test_should_count_missing_values(values: list, expected: float) -> None: column = Column("A", values) - assert column._count_missing_values() == expected + assert column.missing_value_count() == expected