def mean(in_list): """ Returns mean of given list :param in_list: list to calculate mean from :return: float rounded to 5 decimal places """ return round(sum(in_list) / zcount.count(in_list), 5)
def zstddev(self): test_cases = [ ([10, 12, 23, 23, 16, 23, 21, 16], 5.24), ([35, 5.2, 156, 1.111, 23, 0.1, 65], 55.84), ([9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 6.13, 3.1, 9.13, 7.26, 4.74], 2.03) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def zstderr(self): test_cases = [ ([21, 568, 48, 543, 21, 2., 23, 798, 8.1], 105.36), ([287, 54, 16, 65, 87, 49, 62], 34.04), ([7, 1, 6, 9, 88, 5, 2], 11.9) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def zvariance(self): test_cases = [ ([8, 10, 13, 14, 17], 12.3), ([4.5, 7.1, 12.3, 17, 20], 42.3), ([0, 1], 0.5) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def test_zmedian(self): test_cases = [ ([0], 0), ([123, 237, 58, 87, 57], 87), ([0, 1.31, 867, .76867, 23, 564, 234, 6575], 128.5) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def test_zmean(self): test_cases = [ ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5.5), ([10, 15.2, 32.12, 9, 41], 21.46), ([0], 0) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def stderr(in_list): """ Calculates standard error of mean of given list :param in_list: list of values :return: float rounded to 5 decimal places """ std_dev = zstddev.stddev(in_list) n = zcount.count(in_list) std_err = std_dev / sqrt(n) return round(std_err, 5)
def test_zmode(self): test_cases = [ ([1, 4, 2, 9, 7, 8, 9, 3, 1, 123, 2.3, 2.3, 5, 2.3, 23, 2.3], 2.3), ([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123], 1), ([-1, -1, -2, -3, -1, -3, -3, -3, -3], -3) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def test_zcount(self): test_cases = [ ([], 0), ([1, 2, 3, 4, 5, 6], 6), ([1.1, 2.2, 3.3, 4.4, 5.5], 5), ([10, .2, 1032, 3, 75, 5.6], 6) ] for list_in, expected in test_cases: with self.subTest(f"{list_in} -> {expected}"): self.assertEqual(expected, zcount.count(list_in))
def variance(in_list): """ Finds variance of given list :param in_list: list of values :return: float rounded to 5 decimal places """ n = zcount.count(in_list) mean = zmean.mean(in_list) d = [(x - mean) ** 2 for x in in_list] v = sum(d) / (n - 1) return round(v, 5)
def corr(l1, l2): """ Calculates the correlation between two lists of values :param l1: list of values :param l2: list of values :return: float rounded to 5 decimal places """ l1_sum = sum(l1) l2_sum = sum(l2) l1_times_l2_sum = sum([l1[i] * l2[i] for i in range(len(l1))]) l1_sq_sum = sum([x**2 for x in l1]) l2_sq_sum = sum([x**2 for x in l2]) n = zcount.count(l1) corr_num = (n * l1_times_l2_sum) - (l1_sum * l2_sum) corr_den = sqrt( ((n * l1_sq_sum) - (l1_sum**2)) * ((n * l2_sq_sum) - (l2_sum**2))) corr = corr_num / corr_den return round(corr, 5)
def csv_reader(file): reader = csv.DictReader(open(file)) result = {} for row in reader: for column, value in row.items(): result.setdefault(column, []).append(float(value)) return result test = csv_reader(dataOne) x = [10.0, 8.0, 13.0, 9.0, 11.0, 14.0, 6.0, 4.0, 12.0, 7.0, 5.0] y = [9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 6.13, 3.1, 9.13, 7.26, 4.74] print("Count") print(zcount.count(x)) print("Mean") print(zmean.mean(x)) print("Mode") print(zmode.mode(x)) print("Median") print(zmedian.median(x)) print("Variance") print(zvariance.variance(x)) print("Standard Deviation") print(zstderr.stdderr(x)) print("Standard Error") print(zstddev.stddev(x)) print("Correlation") print(zcorr.covariance(x, y))
def test_count2(self): test_data = [] self.assertEqual(len(test_data), zcount.count(test_data))
def test_count1(self): test_data = [1, 2, 3, 4, 5, 6, 7] self.assertEqual(len(test_data), zcount.count(test_data))
def test_count3(self): test_data = [1, 1, 1] self.assertEqual(len(test_data), zcount.count(test_data))
from statzcw import csvReader, zcount, zmean, zmode, \ zmedian, zvariance, zstddev, zstderr, zcorr csv_files = ['dataZero.csv', 'dataOne.csv', 'dataTwo.csv', 'dataThree.csv'] for f in csv_files: print('----------------------') print('File: ', f) print('----------------------') data = csvReader.read_csv(f) x = data[0] y = data[1] # x list print('x list') print('------') print('Count X: ', zcount.count(x)) print('Mean X: ', zmean.mean(x)) print('Median X ', zmedian.median(x)) print('Mode X: ', zmode.mode(x)) print('Variance X: ', zvariance.variance(x)) print('Standard Deviation X: ', zstddev.stddev(x)) print('Standard Error X: ', zstderr.stderr(x)) # y list print('-------') print('y list:') print('-------') print('Count Y: ', zcount.count(y)) print('Mean Y: ', zmean.mean(y)) print('Median Y ', zmedian.median(y)) print('Mode Y: ', zmode.mode(y))