一、平均数计算
def averagea(*args): """ 计算输入数据的平均数 :param args: 需要计算平均数的数据,可以输入一个或多个数字 :return: 返回计算好的平均数 """ return sum(args) / len(args)
averagea是一款简单方便,用于计算平均数的函数。输入参数可以是一个或多个数字,返回值为所有数字的平均数。这款函数可以帮助数据分析师、数学教师、学生等方便地计算数据的平均值,减少人工计算出错的可能性。
使用方法如下:
# 计算5、6、7、8四个数字的平均值 avg = averagea(5, 6, 7, 8) print(avg) # 输出6.5
二、计算加权平均数
def weighted_averagea(*args): """ 计算输入数据的加权平均数 :param args: 需要计算加权平均数的数据组,每组数据包括两个参数,第一个为数据值,第二个为该数据值的权重 :return: 返回计算好的加权平均数 """ sum_values = 0 sum_weight = 0 for value, weight in args: sum_values += value * weight sum_weight += weight return sum_values / sum_weight
weighted_averagea是一款用于计算加权平均数的函数。与averagea相比,该函数可以支持输入每个数据值的权重,并且按照权重计算出加权平均数。例子中,计算出的加权平均数更能体现出数据的综合性。
使用方法如下:
# 计算5、6、7、8四个数字的加权平均值,其中5的权重为2,其余为1 w_avg = weighted_averagea((5,2), (6,1), (7,1), (8,1)) print(w_avg) # 输出5.666666666666667
三、过滤异常值
def filter_outliers(data, deviation=1.5): """ 定义数据异常值,计算数据平均值及标准差,并过滤掉异常值 :param data: 需要过滤的数据组 :param deviation: 在数据平均值±标准差*deviation范围内的数据视为正常值,默认值为1.5 :return: 返回过滤掉异常值后的数据 """ avg = averagea(*data) std = (sum((i - avg) ** 2 for i in data) / len(data)) ** 0.5 return [i for i in data if abs(i - avg) <= deviation * std]
filter_outliers是一款用于过滤数据中异常值的函数。该函数通过计算所有数据的平均值及标准差,找到在平均值±标准差*deviation范围内的数据作为正常值,并返回过滤掉异常值后的数据。数据分析人员可以使用此函数对数据进行初步处理,并得到规范化的数据分析结果。
使用方法如下:
# 过滤掉列表中所有异常值(留下5、6、7、8、9正常值) filtered_data = filter_outliers([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], deviation=1.5) print(filtered_data) # 输出 [5, 6, 7, 8, 9]
四、计算平均数时间复杂度的优化
from functools import reduce def averagea_reduce(*args): """ 计算输入数据的平均数(优化时间复杂度) :param args: 需要计算平均数的数据,可以输入一个或多个数字 :return: 返回计算好的平均数 """ return reduce(lambda x, y: x + y, args) / len(args)
averagea_reduce是对averagea的时间复杂度进行了优化的函数。使用lambda函数和reduce函数将迭代次数从O(n)降低到O(1),在数据量极大的情况下能够大幅度提高计算效率。
使用方法与averagea相同:
# 计算5、6、7、8四个数字的平均值 avg_reduce = averagea_reduce(5, 6, 7, 8) print(avg_reduce) # 输出6.5