Last active
December 14, 2015 17:07
-
-
Save zoidyzoidzoid/dd2a05548ca1f2f885ef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import matplotlib.pyplot as plt | |
import math | |
import random | |
data = [random.randint(10,100) for i in range(0,100)] | |
class Analysis(object): | |
def __init__(self, data): | |
data = ds or [] | |
if not isinstance(ds, list): | |
return 'no list... why no list???' | |
if any(not isinstance(d, int) for d in ds): | |
return 'At least one element of ds is not an int.' | |
self.data = data | |
def mean(self): | |
return sum(self.data) / len(self.data) | |
def median(self): | |
data = sorted(self.data) | |
ds_length = len(self.data) | |
if ds_length < 1: | |
return None | |
elif ds_length % 2 == 1: | |
return self.data[((ds_length + 1) / 2) - 1] | |
else: | |
return float(sum(self.data[(ds_length / 2) - 1:(ds_length / 2) + 1])) / 2.0 | |
def mode(self): | |
return max(set(self.data), key=self.data.count) | |
def std(self): | |
return math.sqrt(sum((val - mean(self.data)) ** 2 for val in self.data) / (len(self.data) - 1)) | |
def get_max(self): | |
return max(self.data) | |
def get_min(self): | |
return min(self.data) | |
def get_range(self): | |
return max(self.data) - min(self.data) | |
def graph_it(ds, mean=None, median=None, mode=None, maximum=None, minimum=None, range=None, std_dev=None): | |
mean = mean or self.mean() | |
median = median or self.median() | |
mode = mode or self.mode() | |
maximum = maximum or self.get_max() | |
minimum = minimum or self.get_min() | |
data_range = data_range or self.get_range() | |
std_dev = std_dev or self.std_dev() | |
means = [mean for i in ds] | |
medians = [median for i in ds] | |
modes = [mode for i in ds] | |
maxes = [maximum for i in ds] | |
mins = [get_min for i in ds] | |
stdsp = [mean + std for i in ds] | |
stdsm = [mean - std for i in ds] | |
ranges = [get_range for i in ds] | |
[plt.plot(i) for i in [ds,means,medians,modes,maxes,mins,ranges,stdsp,stdsm]] | |
plt.title( | |
'mean = {} median = {} mode = {} std = {} max = {} min = {} range = {}'.format( | |
mean, median, mode, std_dev, maximum, minimum, data_range)) | |
# plt.savefig('./tmp.png') | |
plt.show() | |
Analysis(data).graph_it() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment