統(tǒng)計(jì)一個(gè)列表中每一個(gè)元素的個(gè)數(shù)在Python里有兩種實(shí)現(xiàn)方式,
創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十余年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)整合營銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:成都三維植被網(wǎng)等企業(yè),備受客戶稱揚(yáng)。
第一種是新建一個(gè)dict,鍵是列表中的元素,值是統(tǒng)計(jì)的個(gè)數(shù),然后遍歷list。
items?=?["cc","cc","ct","ct","ac"]
count?=?{}
for?item?in?items:
count[item]?=?count.get(item,?0)?+?1
print(count)
#{'ac':?1,?'ct':?2,?'cc':?2}
之中用到了一個(gè)小技巧,當(dāng)dict中不還沒有統(tǒng)計(jì)過一個(gè)元素時(shí),直接索引count[item]會(huì)報(bào)錯(cuò),而使用get方法count.get(item, 0)能夠設(shè)置索引不存在的鍵時(shí)返回0。
第二種是使用Python內(nèi)置的函數(shù)。統(tǒng)計(jì)元素的個(gè)數(shù)是一種非常常見的操作,Python的collection包里已經(jīng)有一個(gè)Counter的類,大致實(shí)現(xiàn)了上面的功能。
from?collections?import?Counter
items?=?["cc","cc","ct","ct","ac"]
count?=?Counter(items)
print(count)
#Counter({'ct':?2,?'cc':?2,?'ac':?1})
value_counts是一種查看表格某列中有多少個(gè)不同值的快捷方法,并計(jì)算每個(gè)不同值有在該列中個(gè)數(shù),類似Excel里面的count函數(shù)
其是pandas下面的頂層函數(shù),也可以作用在Series、DataFrame下
常規(guī)用法:
pandas 的 value_counts() 函數(shù)可以對(duì)Series里面的每個(gè)值進(jìn)行計(jì)數(shù) 并且 排序,默認(rèn)是降序
可以看出,既可以對(duì)分類變量統(tǒng)計(jì),也可以對(duì)連續(xù)數(shù)值變量統(tǒng)計(jì)
如果是要對(duì)結(jié)果升序排列,可以添加 ascending=True 來改變
如果不想看統(tǒng)計(jì)的個(gè)數(shù),而是想看占比,那么可以設(shè)置 normalize=True 即可,結(jié)果是小數(shù)形式
可以通過apply,對(duì)每一列變量進(jìn)行統(tǒng)計(jì)
以上是自己實(shí)踐中遇到的一些點(diǎn),分享出來供大家參考學(xué)習(xí),歡迎關(guān)注DataShare公眾號(hào)
以下代碼的功能是 統(tǒng)計(jì)列表中重復(fù)項(xiàng)的出現(xiàn)次數(shù)
這里面就用到了 count() 函數(shù)
mylist = ['apple', 'banana', 'grape', 'banana', 'apple', 'grape', 'grape']
myset = set(mylist)
for item in myset:
print("the %s has been found %d times" % (item, mylist.count(item)))
函數(shù)COUNT在計(jì)數(shù)時(shí),將把數(shù)值型的數(shù)字計(jì)算進(jìn)去;但是錯(cuò)誤值、空值、邏輯值、日期、文字則被忽略。
如果參數(shù)是一個(gè)數(shù)組或引用,那么只統(tǒng)計(jì)數(shù)組或引用中的數(shù)字;數(shù)組中或引用的空單元格、邏輯值、文字或錯(cuò)誤值都將忽略。如果要統(tǒng)計(jì)邏輯值、文字或錯(cuò)誤值,請(qǐng)使用函數(shù)COUNTA(COUNTIF按EXCEL的說明也行,但常出毛?。?/p>
排序過程
假設(shè)輸入的線性表L的長(zhǎng)度為n,L=L1,L2,..,Ln;線性表的元素屬于有限偏序集S,|S|=k且k=O(n),S={S1,S2,..Sk};則計(jì)數(shù)排序可以描述如下:
1、掃描整個(gè)集合S,對(duì)每一個(gè)Si∈S,找到在線性表L中小于等于Si的元素的個(gè)數(shù)T(Si);
2、掃描整個(gè)線性表L,對(duì)L中的每一個(gè)元素Li,將Li放在輸出線性表的第T(Li)個(gè)位置上,并將T(Li)減1。
以上內(nèi)容參考:百度百科-計(jì)數(shù)排序