您的位置:

python中计算众数的函数,python众数

本文目录一览:

Python四舍五入后求众数

使用特定代码求。

众数是指在统计分布上具有明显集中趋势点的数值,代表数据的一般水平。也是一组数据中出现次数最多的数值,有时众数在一组数中有好几个,用M表示。

众数是样本观测值在频数分布表中频数最多的那一组的组中值,主要应用于大面积普查研究之中。

众数是在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。

网上找到的一个python求众数的程序,为什么得出的是最大值?怎么改正?

没看你的程序,帮你写了一个。

# coding=utf-8

a = [1,5,2,6,2,5,1,6,6,2,5,1,1,6,2,8,2,0,5,4,1,3]

b = {}

for i in a:

if i in b.keys():

b[i] += 1

else:

b[i] = 1

c = sorted(b.items(), key=lambda x:x[1], reverse=True)

print '众数:', c[0][0], '众数个数:', c[0][1]

169. 求众数(Python)

难度:★☆☆☆☆

类型:数学

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在众数。

示例 1:

输入: [3,2,3]

输出: 3

示例 2:

输入: [2,2,1,1,1,2,2]

输出: 2

为了找到出现次数最多的数,最简单的逻辑就是统计每次数字出现的次数,再拿取出其中出现次数最多的数字。该方法道理简单,但是内存开销较大。

这道题目所求的众数的定义与常规概念不同的是,这里众数的出现次数要比数组中其他所有元素要多的,根据这个原理,我们将结果变量(res)初始化为数组第一个数,另外准备一个统计变量(count),当这个变量遇到和结果相同的数则加一,否则减一,减为零时更换结果变量为下一个数,由于众数出现次数多于其他字符,那么数组遍历结束后统计变量一定大于零,且此时结果变量中的数即为众数。

这里众数的的出现次数超过其他元素,因此我们将数据进行排序后,最中间的数字一定是众数。

如有疑问或建议,欢迎评论区留言~

Python pandas用法

在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。

使用下面格式约定,引入pandas包:

pandas有两个主要数据结构:Series和DataFrame。

Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。

pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。

Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。

Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。

DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。

如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:

数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:

重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。

df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量;copy 默认True,生成新的对象,False时,新旧相等不复制。

删除指定索引 :默认返回的是一个新对象。

.drop() :能够删除Series和DataFrame指定行或列索引。

删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。

如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。

增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。

在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结

适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。

.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。

.sum() :计算各列数据的和

.count() :非NaN值的数量

.mean( )/.median() :计算数据的算术平均值、算术中位数

.var()/.std() :计算数据的方差、标准差

.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。

.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。

.min()/.max() :计算数据的最小值、最大值

.diff() :计算一阶差分,对时间序列很有效

.mode() :计算众数,返回频数最高的那(几)个

.mean() :计算均值

.quantile() :计算分位数(0到1)

.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集

适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。

.unique() :返回一个Series中的唯一值组成的数组。

.value_counts() :计算一个Series中各值出现的频率。

.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)

.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。

在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。

在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。

替换值

.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。

删除重复数据

利用函数或字典进行数据转换

df.head():查询数据的前五行

df.tail():查询数据的末尾5行

pandas.cut()

pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。

pandas.date_range() 返回一个时间索引

df.apply() 沿相应轴应用函数

Series.value_counts() 返回不同数据的计数值

df.aggregate()

df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用

numpy.zeros()

python如何求一个众数

import numpy as np

a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])

counts = np.bincount(a)

print np.argmax(counts)

1

numpy 有求众数的函数吗

pandas有mode()函数是求众数的

df=pandas.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one']})

df.mode()

key1 key2

0 a one