常用统计类函数的python实现
本范例包含了对数字数组求和、计数、最大最小值、平均值、中位数、标准偏差、百分比等常用统计函数
""" 作者:皮蛋编程(https://www.pidancode.com) 创建日期:2022/3/18 修改日期:2022/3/18 功能描述:针对数字数组的常用统计函数Python实现 """ import sys class Stats: def __init__(self, sequence): # 将列表内的所有元素转换成浮点数 self.sequence = [float(item) for item in sequence] def sum(self): if len(self.sequence) < 1: return None else: return sum(self.sequence) def count(self): return len(self.sequence) def min(self): if len(self.sequence) < 1: return None else: return min(self.sequence) def max(self): if len(self.sequence) < 1: return None else: return max(self.sequence) def avg(self): if len(self.sequence) < 1: return None else: return sum(self.sequence) / len(self.sequence) def median(self): if len(self.sequence) < 1: return None else: self.sequence.sort() return self.sequence[len(self.sequence) // 2] def stdev(self): if len(self.sequence) < 1: return None else: avg = self.avg() sdsq = sum([(i - avg) ** 2 for i in self.sequence]) stdev = (sdsq / (len(self.sequence) - 1)) ** .5 return stdev def percentile(self, percentile): if len(self.sequence) < 1: value = None elif (percentile >= 100): sys.stderr.write('ERROR: 百分比必须 < 100. 您提供的是: %s\n' % percentile) value = None else: element_idx = int(len(self.sequence) * (percentile / 100.0)) self.sequence.sort() value = self.sequence[element_idx] return value # 演示代码 sequence = [1.2, 2.6, 9, 13.8, 8.0] stats = Stats(sequence) print('求和:{}'.format(stats.sum())) print('数组长度:{}'.format(stats.count())) print('最大值:{}'.format(stats.max())) print('最小值:{}'.format(stats.min())) print('中位数:{}'.format(stats.median())) print('标准差:{}'.format(stats.stdev())) print('平均数:{}'.format(stats.avg())) print('百分数:{}'.format(stats.percentile(70)))
输出结果:
求和:34.6
数组长度:5
最大值:13.8
最小值:1.2
中位数:8.0
标准差:5.104115986142948
平均数:6.92
百分数:9.0
相关文章