Coverage for src/ipyvizzu/data/converters/df/converter.py: 100%
27 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-12 08:13 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-12 08:13 +0000
1"""
2This module provides the `DataFrameConverter` abstract class.
3"""
5from abc import abstractmethod
6from typing import List
7import warnings
9from ipyvizzu.data.converters.converter import ToSeriesListConverter
10from ipyvizzu.data.converters.df.type_alias import DataFrame
11from ipyvizzu.data.type_alias import (
12 DimensionValue,
13 MeasureValue,
14 Series,
15)
18class DataFrameConverter(ToSeriesListConverter):
19 """
20 Converts data frame into a list of dictionaries representing series.
21 Each dictionary contains information about the series `name`, `values` and `type`.
22 """
24 # pylint: disable=too-few-public-methods
26 def __init__(
27 self,
28 default_measure_value: MeasureValue,
29 default_dimension_value: DimensionValue,
30 max_rows: int,
31 ) -> None:
32 super().__init__(default_measure_value, default_dimension_value)
33 self._max_rows = max_rows
35 def get_series_list(self) -> List[Series]:
36 """
37 Convert the `DataFrame` columns to a list of dictionaries representing series.
39 Returns:
40 A list of dictionaries representing series,
41 where each dictionary has `name`, `values` and `type` keys.
42 """
44 series_list = []
45 for name in self._get_columns():
46 series_list.append(self._get_series_from_column(name))
47 return series_list
49 def _get_series_from_column(self, column_name: str) -> Series:
50 values, infer_type = self._convert_to_series_values_and_type(column_name)
51 return self._convert_to_series(column_name, values, infer_type)
53 def _is_max_rows_exceeded(self, row_number: int) -> bool:
54 if row_number > self._max_rows:
55 warnings.warn(
56 "The number of rows of the dataframe exceeds the set `max_rows`, "
57 f"the dataframe is randomly sampled to the set value ({self._max_rows}).",
58 UserWarning,
59 stacklevel=2,
60 )
61 return True
62 return False
64 @abstractmethod
65 def _get_sampled_df(self, df: DataFrame) -> DataFrame:
66 """
67 Returns a sampled data frame for the maximum number of rows.
68 """
70 @abstractmethod
71 def _get_columns(self) -> List[str]:
72 """
73 Return column names of the data frame.
74 """