📜  均值,中位数,众数和范围–统计信息|第9类数学(1)

📅  最后修改于: 2023-12-03 15:23:38.817000             🧑  作者: Mango

均值,中位数,众数和范围–统计信息|第9类数学

在数据分析和机器学习中,经常会用到统计信息,其中包括均值、中位数、众数和范围等。这些统计信息有助于了解数据分布情况,对于分析数据非常有帮助。在本篇文章中,我们将介绍这些统计信息的相关概念和计算方法,并用代码演示如何实现。

均值

均值是一组数据的平均值。常用的均值有算术平均值、加权平均值、几何平均值、谐波平均值等。其中,算术平均值是最常用的一种。下面是如何计算一组数据的算术平均值:

def mean(data):
    return sum(data) / len(data)

上述代码中,我们定义了一个名为 mean 的函数,它接受一个列表作为参数,返回这个列表的算术平均值。函数内部,我们通过 sum(data) 计算了列表中所有元素的总和,再除以列表长度 len(data),就得到了均值。下面是如何使用 mean 函数:

data = [5, 10, 15, 20, 25]
print(mean(data))  # 输出 15.0
中位数

中位数是指一组数按顺序排列,处于中间位置的那个数。如果数的个数为偶数,那么中位数是中间两个数的平均数。下面是如何计算一组数据的中位数:

def median(data):
    data = sorted(data)
    n = len(data)
    if n % 2 == 0:
        return (data[n//2 - 1] + data[n//2]) / 2
    else:
        return data[n//2]

上述代码中,我们定义了一个名为 median 的函数,它接受一个列表作为参数,返回这个列表的中位数。函数内部,我们首先使用 sorted 函数将列表排序,然后判断列表长度的奇偶性,分别计算中位数。如果列表长度为偶数,我们求出中间两个数的平均值;否则,直接返回中间的那个数。下面是如何使用 median 函数:

data = [5, 10, 15, 20, 25]
print(median(data))  # 输出 15
data = [5, 10, 15, 20]
print(median(data))  # 输出 12.5
众数

众数是指一组数中出现次数最多的数。如果有多个数出现次数相同,则它们都是众数。下面是如何计算一组数据的众数:

from collections import Counter

def mode(data):
    counts = Counter(data)
    max_count = max(counts.values())
    modes = [k for k, v in counts.items() if v == max_count]
    return modes

上述代码中,我们首先使用 collections 模块中的 Counter 类统计列表中每个元素的出现次数,然后找到出现次数最多的次数 max_count。最后,我们使用列表推导式找到所有出现次数为 max_count 的元素,返回它们的列表。下面是如何使用 mode 函数:

data = [5, 10, 10, 15, 20, 20, 20, 25]
print(mode(data))  # 输出 [20]
范围

范围是指一组数据中最大值和最小值的差。下面是如何计算一组数据的范围:

def range(data):
    return max(data) - min(data)

上述代码中,我们定义了一个名为 range 的函数,它接受一个列表作为参数,返回这个列表的范围。函数内部,我们使用 maxmin 函数分别找到列表中最大值和最小值,再将它们相减,就得到了范围。下面是如何使用 range 函数:

data = [5, 10, 15, 20, 25]
print(range(data))  # 输出 20

以上就是均值、中位数、众数和范围的相关概念和计算方法。如果你对这些统计信息感兴趣,建议多做一些练习,掌握其计算方法和应用场景。