当前位置: 首页 > 科技观察

教你用Python求均值、中位数和众数

时间:2023-03-16 21:53:25 科技观察

本文转载请联系大数据DT公众号。在本文中,我们将讨论如何使用描述性统计进行数据分析,包括:均值——一组值的平均值;中位数——所有值都有序时的中间值;mode–最常出现的值。这些都是集中趋势的度量,每个都产生一个值,代表一组值中的“中心”值,或者在某种意义上,代表集合中的典型值。让我们计算一个整数列表的均值、中值和众数。以下代码片段创建一个名为grades的列表,然后使用内置的sum和len函数“手动”计算平均值-sum计算成绩总和(397),len计算成绩数(5):grades=[85,93,45,89,85]sum(grades)/len(grades)类似于函数min和max(在《手把手教你用Python求最大值和最小值》中介绍),sum和len都是函数式编程中归约的例子,它们将值的集合减少为单个值-值的总和和值的数量。Python标准库的统计模块提供了计算均值、中位数、众数的函数,也是归约。要使用这些功能,首先需要导入statistics模块,如下:importstatistics然后,就可以使用“statistics”了。加上您需要调用以访问模块功能的函数的名称。以下代码使用统计模块的均值、中值和众数函数分别计算列表成绩的均值(79.4)、中值(85)和众数(85):statistics.mean(grades)statistics.median(grades)statistics.mode(grades)其中每个函数的参数必须是可迭代的,在本例中是列表grades。要确认中位数和众数是否正确,请使用内置的排序函数以值的递增顺序获取列表成绩的副本:sorted(grades)结果:[45,85,85,89,93]列表grades有一个奇数值(5),所以median返回中值(85)。如果列表包含偶数个值,则median返回两个中值的平均值。从排序列表中我们可以看出85是众数,因为它出现次数最多(两次)。像下面这样的列表会导致mode函数引发StatisticsError:[85,93,45,89,85,93]因为其中有两个或多个“最常出现”的值。这样一组值是双峰的,85和93都出现了两次。关于作者:PaulDeitel,Deitel&Associates的首席执行官兼首席技术官,毕业于麻省理工学院,拥有38年的计算经验。Paul是世界上最有经验的编程语言培训师之一,自1992年以来一直为软件开发人员教授专业课程。他服务过的国际客户包括Cisco、IBM、Siemens、Oracle、Dell、Fidelity、NASAKennedySpaceCenter等。本文节选自《Python程序设计:人工智能案例实践》,经出版社授权发布。