pandas有mode()函數(shù)是求眾數(shù)的
創(chuàng)新互聯(lián)建站擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗(yàn)豐富。10年網(wǎng)站優(yōu)化營銷經(jīng)驗(yàn),我們已為數(shù)千家中小企業(yè)提供了成都做網(wǎng)站、網(wǎng)站制作解決方案,按需制作,設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
df=pandas.DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one']})
df.mode()
key1 key2
0 a one
沒看你的程序,幫你寫了一個(gè)。
#?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?'眾數(shù):',?c[0][0],?'眾數(shù)個(gè)數(shù):',?c[0][1]
使用特定代碼求。
眾數(shù)是指在統(tǒng)計(jì)分布上具有明顯集中趨勢點(diǎn)的數(shù)值,代表數(shù)據(jù)的一般水平。也是一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的數(shù)值,有時(shí)眾數(shù)在一組數(shù)中有好幾個(gè),用M表示。
眾數(shù)是樣本觀測值在頻數(shù)分布表中頻數(shù)最多的那一組的組中值,主要應(yīng)用于大面積普查研究之中。
眾數(shù)是在一組數(shù)據(jù)中,出現(xiàn)次數(shù)最多的數(shù)據(jù),是一組數(shù)據(jù)中的原數(shù)據(jù),而不是相應(yīng)的次數(shù)。
難度:★☆☆☆☆
類型:數(shù)學(xué)
給定一個(gè)大小為 n 的數(shù)組,找到其中的眾數(shù)。眾數(shù)是指在數(shù)組中出現(xiàn)次數(shù)大于 ? n/2 ? 的元素。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在眾數(shù)。
示例 1:
輸入: [3,2,3]
輸出: 3
示例 2:
輸入: [2,2,1,1,1,2,2]
輸出: 2
為了找到出現(xiàn)次數(shù)最多的數(shù),最簡單的邏輯就是統(tǒng)計(jì)每次數(shù)字出現(xiàn)的次數(shù),再拿取出其中出現(xiàn)次數(shù)最多的數(shù)字。該方法道理簡單,但是內(nèi)存開銷較大。
這道題目所求的眾數(shù)的定義與常規(guī)概念不同的是,這里眾數(shù)的出現(xiàn)次數(shù)要比數(shù)組中其他所有元素要多的,根據(jù)這個(gè)原理,我們將結(jié)果變量(res)初始化為數(shù)組第一個(gè)數(shù),另外準(zhǔn)備一個(gè)統(tǒng)計(jì)變量(count),當(dāng)這個(gè)變量遇到和結(jié)果相同的數(shù)則加一,否則減一,減為零時(shí)更換結(jié)果變量為下一個(gè)數(shù),由于眾數(shù)出現(xiàn)次數(shù)多于其他字符,那么數(shù)組遍歷結(jié)束后統(tǒng)計(jì)變量一定大于零,且此時(shí)結(jié)果變量中的數(shù)即為眾數(shù)。
這里眾數(shù)的的出現(xiàn)次數(shù)超過其他元素,因此我們將數(shù)據(jù)進(jìn)行排序后,最中間的數(shù)字一定是眾數(shù)。
如有疑問或建議,歡迎評論區(qū)留言~
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