一、平均數計算
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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308255.html