定义- 数值型数据 - 出现频数最多的变量值- 品质型数据、单项式分组数据 - 频数最多的组为众数组,该组的变量值(类型)就是众数- 组距式分组数据 - 频数最多的组为众数组,通过公式求得众数 - 公式计算不适用于组距不相等的数据
适用范围- 位置代表值- 不会受极端值的影响- 适用于描述具有较多个值的变量,且变量值的分布有明显集中趋势的情况
问题大数据背景下,是否需要使用组距式分组数据求众数?
Python求众数的三种方法
1 # 求众数的方法(数值型和品质型)
2 import numpy as np
3 from scipy import stats
4 import pandas as pd
5
6 numlist1 = [1,2,3,4,5,6,7,5,9,8,6,7,3,5] #数值型数据
7 numlist2 = ['1','1','5', '3','3','2',] # 品质型数据
8
9 # 方法一:numpy 模块- 适用于非负数据集
10 counts = np.bincount( numlist2 ) #np.bincount方法返回一个长度为nums最大值的列表
11 res = np.argmax(counts)
12 print( '方法一求众数:', type(res), res )
13
14 # 方法二:scipy模块
15 res = stats.mode( numlist2 )
16 print( '方法二求众数: ', type(res), res[0] )
17 #问题:有多个众数时只返回一个值
18
19 #方法三: pandas模块 - 可显示多个众数
20 s = pd.Series(numlist2) #也可以构建为DateFrame结构
21 res = s.mode()
22 print( '方法三求众数: ', type(res), res.values )
View Code
运行结果