csv_types.Data

 1from src.csv_types.Obj import Obj
 2from src.csv_types.Cols import Cols
 3from src.csv_types.Row import Row
 4from src.utils import csv, rnd, checknum
 5
 6
 7class Data(Obj):
 8    def __init__(self, src):
 9        super().__init__("Data")
10        self.cols = None
11        self.rows = []
12        if isinstance(src, str):
13            csv(src, self.add)
14        elif isinstance(src, dict):
15            for row in src.values():
16                self.add(row)
17        return
18
19    def add(self, xs):
20        if not self.cols:
21            self.cols = Cols(xs)
22        else:
23            row = xs if hasattr(xs, 'cells') and xs.cells else Row(xs)
24            self.rows.append(row)
25            for todo in self.cols.x + self.cols.y:
26                todo.add(row.cells[todo.at])
27
28    def stats(self, places, showCols=None, fun=None):
29        def mid(col):
30            return col.mid()
31        if showCols is None:
32            showCols = self.cols.y
33        if fun is None:
34            fun=mid
35        t = {}
36        for col in showCols:
37            v = fun(col)
38            v = checknum(v) and rnd(v, places) or v
39            t[col.name] = v
40        return t
class Data(src.csv_types.Obj.Obj):
 8class Data(Obj):
 9    def __init__(self, src):
10        super().__init__("Data")
11        self.cols = None
12        self.rows = []
13        if isinstance(src, str):
14            csv(src, self.add)
15        elif isinstance(src, dict):
16            for row in src.values():
17                self.add(row)
18        return
19
20    def add(self, xs):
21        if not self.cols:
22            self.cols = Cols(xs)
23        else:
24            row = xs if hasattr(xs, 'cells') and xs.cells else Row(xs)
25            self.rows.append(row)
26            for todo in self.cols.x + self.cols.y:
27                todo.add(row.cells[todo.at])
28
29    def stats(self, places, showCols=None, fun=None):
30        def mid(col):
31            return col.mid()
32        if showCols is None:
33            showCols = self.cols.y
34        if fun is None:
35            fun=mid
36        t = {}
37        for col in showCols:
38            v = fun(col)
39            v = checknum(v) and rnd(v, places) or v
40            t[col.name] = v
41        return t
Data(src)
 9    def __init__(self, src):
10        super().__init__("Data")
11        self.cols = None
12        self.rows = []
13        if isinstance(src, str):
14            csv(src, self.add)
15        elif isinstance(src, dict):
16            for row in src.values():
17                self.add(row)
18        return
def add(self, xs):
20    def add(self, xs):
21        if not self.cols:
22            self.cols = Cols(xs)
23        else:
24            row = xs if hasattr(xs, 'cells') and xs.cells else Row(xs)
25            self.rows.append(row)
26            for todo in self.cols.x + self.cols.y:
27                todo.add(row.cells[todo.at])
def stats(self, places, showCols=None, fun=None):
29    def stats(self, places, showCols=None, fun=None):
30        def mid(col):
31            return col.mid()
32        if showCols is None:
33            showCols = self.cols.y
34        if fun is None:
35            fun=mid
36        t = {}
37        for col in showCols:
38            v = fun(col)
39            v = checknum(v) and rnd(v, places) or v
40            t[col.name] = v
41        return t