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

开发 后端
本文我们将讨论如何使用描述性统计数据进行数据分析,包括:均值——一组值的平均值;中值——当所有值按顺序排列时的中间值;众数——最常出现的值。

[[399984]]

本文转载自微信公众号「大数据DT」,作者保罗·戴特尔 。转载本文请联系大数据DT公众号。

本文我们将讨论如何使用描述性统计数据进行数据分析,包括:

  • 均值——一组值的平均值;
  • 中值——当所有值按顺序排列时的中间值;
  • 众数——最常出现的值。

以上这些都是集中趋势度量,每种都会产生一个值来表示一组值中的“中心”值,或者说,在某种意义上是这组值中的典型值。

我们来计算一个整数列表的均值、中值和众数。下面的代码段创建一个名为grades的列表,然后使用内置的sum和len函数来“手动”计算平均值——sum计算grade的总和(397),len计算grade的个数(5):

  1. grades = [85, 93, 45, 89, 85] 
  2.  
  3. sum(grades) / len(grades) 

与函数min和max(在《手把手教你用Python求最大值和最小值》一文中介绍)类似,sum和len都是函数式编程中约简的示例,它们会将值合集减少为单个值——值的总和与值的数量。

Python标准库的statistics模块提供了计算均值、中值和众数的函数,这些同样也是约简。要使用这些功能,首先需要导入statistics模块,如下:

  1. import statistics 

然后,可以使用“statistics.”加上需要调用的函数名称来访问模块的功能。下面的代码使用statistics模块的mean、median和mode函数分别计算列表grades的均值(79.4)、中值(85)和众数(85):

  1. statistics.mean(grades) 
  2.  
  3. statistics.median(grades) 
  4.  
  5. statistics.mode(grades) 

其中,每个函数的参数都必须是可迭代的,在本例中为列表grades。要确认中值和众数是否正确,可以使用内置的sorted函数来得到列表grades按值的递增顺序排列的副本:

  1. sorted(grades) 

结果:

  1. [45, 85, 85, 89, 93] 

列表grades具有奇数个值(5),因此median返回中间值(85)。如果列表包含偶数个值,则median会返回两个中间值的平均值。从排好序的列表可以看到85是众数,因为它出现的次数最多(两次)。类似于下面的列表会导致mode函数产生一个StatisticsError:

  1. [85, 93, 45, 89, 85, 93] 

因为其中有两个或更多个“出现最多”的值。这样的一组值是双峰的,85和93都出现了两次。

关于作者:保罗·戴特尔,Deitel&Associates公司首席执行官兼首席技术官,毕业于麻省理工学院,拥有38年的计算经验。保罗是世界上最有经验的编程语言培训师之一,自1992年以来一直针对软件开发人员教授专业课程。他服务过的国际客户包括思科、IBM、西门子、Oracle、戴尔、富达、美国国家航空航天局肯尼迪航天中心等。

 

本文摘编自《Python程序设计:人工智能案例实践》,经出版方授权发布。

 

责任编辑:武晓燕 来源: 大数据DT
相关推荐

2021-08-09 13:31:25

PythonExcel代码

2021-05-09 22:41:43

Python数据统计

2021-05-10 06:48:11

Python腾讯招聘

2022-10-19 14:30:59

2011-03-28 16:14:38

jQuery

2021-02-06 14:55:05

大数据pandas数据分析

2021-02-04 09:00:57

SQLDjango原生

2021-02-02 13:31:35

Pycharm系统技巧Python

2021-12-11 20:20:19

Python算法线性

2022-08-04 10:39:23

Jenkins集成CD

2021-01-27 21:55:13

代码参数值ECharts

2021-01-21 09:10:29

ECharts柱状图大数据

2021-01-08 10:32:24

Charts折线图数据可视化

2015-07-20 14:15:28

Spring ClouDocker微服务

2021-03-02 09:05:13

Python

2022-06-30 16:10:26

Python计时器装饰器

2021-03-23 09:05:52

PythonExcelVlookup

2009-04-22 09:17:19

LINQSQL基础

2012-01-11 13:40:35

移动应用云服务

2020-03-08 22:06:16

Python数据IP
点赞
收藏

51CTO技术栈公众号