def get_all_stats(xform, field=None): data = {} for field_name in [field] if field else get_numeric_fields(xform): _min, _max, _range = get_min_max_range_for_field(field_name, xform) mode = get_mode_for_field(field_name, xform) mean = get_mean_for_field(field_name, xform) median = get_median_for_field(field_name, xform) data[field_name] = { 'mean': round(mean, DECIMAL_PRECISION), 'median': median, 'mode': round(mode, DECIMAL_PRECISION), 'max': _max, 'min': _min, 'range': _range } return data
def numeric_converter(self, json_dict, numeric_fields=None): if numeric_fields is None: numeric_fields = get_numeric_fields(self.xform) for key, value in json_dict.items(): if isinstance(value, basestring) and key in numeric_fields: converted_value = numeric_checker(value) if converted_value: json_dict[key] = converted_value elif isinstance(value, dict): json_dict[key] = self.numeric_converter(value, numeric_fields) elif isinstance(value, list): for k, v in enumerate(value): if isinstance(v, basestring) and key in numeric_fields: converted_value = numeric_checker(v) if converted_value: json_dict[key] = converted_value elif isinstance(v, dict): value[k] = self.numeric_converter(v, numeric_fields) return json_dict
def get_min_max_range(xform, field=None): data = {} for field_name in [field] if field else get_numeric_fields(xform): _min, _max, _range = get_min_max_range_for_field(field_name, xform) data[field_name] = {'max': _max, 'min': _min, 'range': _range} return data
def get_mode_for_numeric_fields_in_form(xform, field=None): data = {} for field_name in [field] if field else get_numeric_fields(xform): mode = get_mode_for_field(field_name, xform) data.update({field_name: round(mode, DECIMAL_PRECISION)}) return data
def get_median_for_numeric_fields_in_form(xform, field=None): data = {} for field_name in [field] if field else get_numeric_fields(xform): median = get_median_for_field(field_name, xform) data.update({field_name: median}) return data
def get_mean_for_numeric_fields_in_form(xform, field): data = {} for field_name in [field] if field else get_numeric_fields(xform): mean = get_mean_for_field(field_name, xform) data.update({field_name: np.round(mean, DECIMAL_PRECISION)}) return data