so_magic.data.backend.panda_handling.client_code   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 40
dl 0
loc 62
rs 10
c 0
b 0
f 0
wmc 9

9 Methods

Rating   Name   Duplication   Size   Complexity  
A PDTabularRetrieverDelegate.nb_rows() 0 3 1
A PDTabularRetrieverDelegate.nb_columns() 0 3 1
A PDTabularIteratorDelegate.itercolumns() 0 3 1
A PDTabularIteratorDelegate.columnnames() 0 3 1
A PDTabularIteratorDelegate.iterrows() 0 3 1
A PDTabularRetrieverDelegate.row() 0 3 1
A PDTabularRetrieverDelegate.column() 0 3 1
A PDTabularMutatorDelegate.add_column() 0 3 1
A PDTabularRetrieverDelegate.get_numerical_attributes() 0 3 1
1
from so_magic.data.interfaces import TabularRetriever, TabularIterator, TabularMutator
2
3
__all__ = ['BACKEND']
4
5
6
# User defined (engine dependent implementations of tabular operations)
7
8
class PDTabularRetrieverDelegate(TabularRetriever):
9
    """The observation object is the same as the one your return from 'from_json_lines'"""
10
11
    @classmethod
12
    def column(cls, identifier, data):
13
        return data.observations[identifier]
14
15
    @classmethod
16
    def row(cls, identifier, data):
17
        return data.observations.iloc[[identifier]]
18
19
    @classmethod
20
    def nb_columns(cls, data):
21
        return len(data.observations.columns)
22
23
    @classmethod
24
    def nb_rows(cls, data):
25
        return len(data.observations)
26
27
    @classmethod
28
    def get_numerical_attributes(cls, data):
29
        return data.observations._get_numeric_data().columns.values
30
31
32
class PDTabularIteratorDelegate(TabularIterator):
33
    """The observation object is the same as the one your return from 'from_json_lines'"""
34
35
    @classmethod
36
    def columnnames(cls, data):
37
        return list(data.observations.columns)
38
39
    @classmethod
40
    def iterrows(cls, data):
41
        return iter(data.observations.iterrows())
42
43
    @classmethod
44
    def itercolumns(cls, data):
45
        return iter(data.observations[column] for column in data.observations.columns)
46
47
48
class PDTabularMutatorDelegate(TabularMutator):
49
50
    @classmethod
51
    def add_column(cls, datapoints, values, new_attribute, **kwargs):
52
        datapoints.observations[new_attribute] = values
53
54
55
BACKEND = {
56
    'backend_id': 'pd',
57
    'backend_name': 'pandas',
58
    'interfaces': [
59
        PDTabularRetrieverDelegate,
60
        PDTabularIteratorDelegate,
61
        PDTabularMutatorDelegate,
62
    ]
63
}
64