Calculate Mean and Standard Deviation
2.1, 3.3, 4.5, 2.6, 3.7, 4.8
#!/usr/bin/env python3.5
from math import sqrt
class Calc_Mean_SD(object):
def parse_comma_file(self, file):
'''Parse comma separated float numbers.'''
float_nums = []
for line in file:
substrs = line.split(',', line.count(','))
for str_var in substrs:
float_nums.append(float(str_var))
return float_nums
def calc_mean(self, numbers):
'''Calculate mean from list of numbers. Iterate through list.
Add each number to sum. Calculate mean. Return mean value.'''
sum = 0.0
for number in numbers:
sum += number
mean = sum / len(numbers)
return mean
def calc_sd(self, numbers, mean):
'''Calculate standard deviation. Iterate through list.
Calculate single deviation, and add to single_dev.'''
deviation = 0.0
single_dev = 0.0
for number in numbers:
single_dev = number - mean
deviation += (single_dev ** 2)
standard_deviation = sqrt(deviation / (len(numbers) -1))
return standard_deviation
def run(self, filename):
in_file = open(filename, 'r')
numbers = self.parse_comma_file(in_file)
mean = self.calc_mean(numbers)
standard_deviation = self.calc_sd(numbers, mean)
print('Mean:', str(mean))
print('Standard Deviation:', str(standard_deviation))
in_file.close()
if __name__ == '__main__':
obj = Calc_Mean_SD()
obj.run('random_floats.txt')
# Mean: 3.5
# Standard Deviation: 1.0526157893552612
# http://learningzone.rspsoc.org.uk/index.php/Learning-Materials/Python-Scripting/3.1-Read-and-write-to-text-files