频数分析先将给定的数据从小到大进行排序,然后根据最小值和最大值对数据序列进行分箱,即等间隔地分成多个等份,得到每个等份的起始值和终止值,最后计算原数据落在每个分箱内的个数。通过频数分析可以探查数据的分布情况。
Python中用pandas包的qcut函数进行数据分箱。在Python IDLE Shell窗口键入下面的命令行:
code.python
>>> import pandas as pd
>>> x=[1,9,5,3,12,8,20,4,5]
>>> x
[1, 9, 5, 3, 12, 8, 20, 4, 5]
>>> st=set(x) #列表转换为集合,去重,排序
>>> st
{1, 3, 4, 5, 8, 9, 12, 20}
>>> ser=pd.Series(list(st)) #创建Series
>>> cut=pd.qcut(ser,20) #用qcut函数进行分箱
>>> freq=cut.value_counts(sort=False) #计算落在各分箱的数据个数
>>> freq
(0.999, 1.7] 1
(1.7, 2.4] 0
……
(14.4, 17.2] 0
(17.2, 20.0] 1
dtype: int64