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