Passed
Push — dev ( 1b3874...6a1e3c )
by Konstantinos
03:33
created

green_magic.data.backend.panda_handling.data_handler   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 26
dl 0
loc 37
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A DataFHandler.get_all_variables() 0 2 1
A DataFHandler.add_state() 0 7 2
A DataFHandler.get_categorical_variables() 0 2 1
A DataFHandler.get_numerical_variables() 0 2 1
A DataFHandler.missing() 0 2 1
A DataFHandler.del_state() 0 6 2
1
from . import df_operations as dfop
2
from green_magic.data.base_handling import BaseDataHandler
3
4
5
@BaseDataHandler.register_as_subclass('df-handler')
6
class DataFHandler(BaseDataHandler):
7
8
    def get_all_variables(self, *args, **kwargs):
9
        return args[0].columns
10
11
    def get_categorical_variables(self, *args, **kwargs):
12
        return dfop.categorical_feats(args[0])
13
14
    def get_numerical_variables(self, *args, **kwargs):
15
        return dfop.numerical_feats(args[0])
16
17
    def missing(self, df):
18
        return dfop.missing_values(df)
19
20
    def add_state(self, dataset, feature, computer, state, cache_prev=True, **kwargs):
21
        values = computer(dataset, feature)
22
        prev_state = feature.state
23
        feature.update(state.key, state.reporter)
24
        dataset.datapoints.observations[state.index] = values
25
        if not cache_prev:
26
            self.del_state(dataset, feature, prev_state)
27
28
    def del_state(self, dataset, feature, state, **kwargs):
29
        # DEBUG CODE
30
        if state.key == feature.current:
31
            raise RuntimeError(f"Requested to delete attribute/column '{state.key}', but it is the current state of feature {str(feature)}")
32
        del dataset.datapoints.observations.df[f'{feature.id}-{state.key}']
33
        del feature.states[state.key]
34
35
36
data_handler = DataFHandler()
37
38