在Python中不使用库查找均值、中位数、众数

2025 年 3 月 4 日 | 阅读 5 分钟

均值、中位数和众数是数据分析中非常常用的统计函数。尽管有一些 Python 库。

平均数

将列表中所有数字相加除以列表中数字总数的数字就是均值,也称为平均值。均值传达了最能表征数据离散程度的核心值。将所有数字相加后,用总和除以值的总数来计算。

公式

均值 = ∑xi / n

Python 中均值的实现

现在我们将通过以下示例演示如何在不使用任何库的情况下找到给定数字集均值的方法。

程序说明

此代码确定了值列表的均值。最初,使用内置的 sum() 函数确定列表中值的总和。在确定使用 len() 方法有多少个值之后,它将对总和进行除法以获得平均值。最后,它将列表和计算出的平均值打印到小数点后两位。

输出

 
values = [8, 14, 9, 16, 14, 5]
mean of the above values : 11.0   

时间复杂度:O(N)

辅助空间: O(1)

中位数

排序数字列表中间的数字称为中位数。当列表条目数为奇数时,精确的中间值称为中位数。当列表条目数为偶数时,中位数是两个中间值的平均值。在此计算中,对列表进行排序至关重要。

公式

  • 对于奇数个值 (n)
    Finding Mean, Median, Mode in Python Without Libraries
  • 对于偶数个值 (n)
    Finding Mean, Median, Mode in Python Without Libraries

Python 中中位数的实现

现在我们将通过以下示例演示如何在不使用任何库的情况下找到给定数字集中位数的方法。

程序说明

该程序将数字列表按升序排序,检查长度是偶数还是奇数,计算两个中间值的平均值,并直接取中间值。最后,它打印排序列表和计算出的中位数。

输出

 
The Sorted List: [4, 6, 12, 14, 20, 22]
Median: 13.0   

时间复杂度: O(N log N)

辅助空间: O(1)

众数

在一系列数字中出现次数最多的数字是众数。如果列表中的每个值都不同,则该列表可能有一个众数、多个众数或没有众数。通过计算每个数字的出现次数并确定哪个数字或哪些数字出现次数最多,可以找到众数。

Python 中众数的实现

现在我们将通过以下示例演示如何在不使用任何库的情况下找到给定数字集众数的方法。

程序说明

以下是一个使用 collections 模块中的 Counter 类来计算数字列表众数的程序。它计算每个数字的出现次数,找到最显著的出现次数,然后找到出现次数最多的所有数字。

输出

 
The List of numbs: [18, 16, 18, 22, 6, 9]
Freq of the each number: {18: 2, 16: 1, 22: 1, 6: 1, 9: 1}
Mode(s) of  list is/are: 18   

时间复杂度: O(n)。此算法的时间复杂度为 O(n)。这是因为为了确定众数,算法需要遍历列表中的所有项。

辅助空间: O(n)。由于必须使用字典来保存列表中每个条目的计数,因此算法的空间复杂度为 O(n)。

另一种使用简单编码(HR)查找众数的简单方法

程序说明

该软件通过处理整数列表来确定可能的众数。在遍历列表时,重复值会被添加到 mode_candidates 中,唯一值会被添加到 unique_elements 中。处理后,它会删除重复项并输出 mode_candidates 集合以显示众数。

输出

 
{52, 84, 22, 71}