日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python在统计专业的应用_Python:使用Counter进行计数统计

發布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python在统计专业的应用_Python:使用Counter进行计数统计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計數統計就是統計某一項出現的次數。實際應用中很多需求需要用到這個模型。比如測試樣本中某一指出現的次數、日志分析中某一消息出現的頻率等等‘這種類似的需求有很多實現方法。下面就列舉幾條。

(1)使用dict

看下面代碼#coding=utf-8

data = [‘a‘,‘2‘,2,4,5,‘2‘,‘b‘,4,7,‘a‘,5,‘d‘,‘a‘,‘z‘]

count_frq = dict()

for one in data:

if one in count_frq:

count_frq[one] += 1

else:

count_frq[one] = 1

print count_frq

輸出結果如下:

{‘a‘: 3, 2: 1, ‘b‘: 1, 4: 2, 5: 2, 7: 1, ‘2‘: 2, ‘z‘: 1, ‘d‘: 1}

這種方法最簡單,也是最容易想到的,鄙人這寫這篇博文之前用的最多,不過以后應該不會用來,我們應該使代碼更加Pythonic

(2)使用set和list

代碼如下:#coding=utf-8

data = [‘a‘,‘2‘,2,4,5,‘2‘,‘b‘,4,7,‘a‘,5,‘d‘,‘a‘,‘z‘]

data_set = set(data)

count_list = []

for one in data_set:

count_list.append((one,data.count(one)))

print count_list

輸出結果如下:

[(‘a‘, 3), (2, 1), (‘b‘, 1), (4, 2), (5, 2), (7, 1), (‘2‘, 2), (‘z‘, 1), (‘d‘, 1)]

這里面利用了list的通用方法和集合(set)的特性,集合是一個無序不重復的元素集,而工廠函數set()可以將列表轉換為一個無序不重復的元素集合。

以上方法都很簡單,但不夠Pythonic。下面來介紹collections中的Counter類。

(一)Counter類

Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器類型,以字典的鍵值對形式存儲,其中元素作為key,其計數作為value。計數值可以是任意的Interger(包括0和負數)支持集合操作+、-、&、|,其中&、|操作分別返回兩個Counter對象各元素的最大值和最小值。

(1)Counter的初始化

跟平時自定義類的初始化方法差不多,如下:

c = Counter("hello world")#可迭代對象創建

c = Counter(h=1,l=3,o=2)#關鍵字創建

c = Counter({‘h‘:1,‘l‘:3,‘o‘:2})#字典創建

c = Counter()#空Counter類

(2)Counter類常見方法

elements():返回一個迭代器。元素被重復了多少次,在該迭代器中就包含多少個該元素。所有元素按照字母序排序,個數小于1的元素不被包含。

update():用于統計對象元素的更新,原有的Counter計數器對象與新增元素的統計計數值相加而不是直接替換。

subtract():該方法用于計數器對象中元素統計值減少,輸入輸出的統計值書可以為0或者負數的。

most_common([n]):可以查找出前n個出現頻率最高的元素以及它們對于的次數,也就是說頻率搞的排在最前面。

所以上面的例子用Counter類的話,也很簡單,代碼如下:#coding=utf-8

from collections import Counter

data = [‘a‘,‘2‘,2,4,5,‘2‘,‘b‘,4,7,‘a‘,5,‘d‘,‘a‘,‘z‘]

c = Counter(data)

print c

輸出結果如下:

Counter({‘a‘: 3, 4: 2, 5: 2, ‘2‘: 2, 2: 1, ‘b‘: 1, 7: 1, ‘z‘: 1, ‘d‘: 1})

咱們接著看代碼print c.elements()

print list(c.elements())

輸出結果如下:

[‘a‘, ‘a‘, ‘a‘, 2, ‘b‘, 4, 4, 5, 5, 7, ‘2‘, ‘2‘, ‘z‘, ‘d‘]c[‘z‘] -= 1

print c

print c.elements()

print list(c.elements())

輸出結果如下:

Counter({‘a‘: 3, 4: 2, 5: 2, ‘2‘: 2, 2: 1, ‘b‘: 1, 7: 1, ‘d‘: 1, ‘z‘: 0})

[‘a‘, ‘a‘, ‘a‘, 2, ‘b‘, 4, 4, 5, 5, 7, ‘2‘, ‘2‘, ‘d‘]

元素’z‘的統計值變為了0,然后進行elements()運算后,‘z‘就被排除掉了。c.update("aaaa")

print c

輸出結果:

Counter({‘a‘: 7, 4: 2, 5: 2, ‘2‘: 2, 2: 1, ‘b‘: 1, 7: 1, ‘d‘: 1, ‘z‘: 0})

update()在原基礎上增加了計數值c.subtract("aaaaa")

print c

輸出結果如下:

Counter({‘a‘: 2, 4: 2, 5: 2, ‘2‘: 2, 2: 1, ‘b‘: 1, 7: 1, ‘d‘: 1, ‘z‘: 0})

subtract()在原基礎上減少計數值print c.most_common()

輸出結果如下:

[(‘a‘, 2), (4, 2), (5, 2), (‘2‘, 2), (2, 1), (‘b‘, 1), (7, 1), (‘d‘, 1), (‘z‘, 0)]

以上代碼都是連接在一起的。

(3)算術和集合操作#coding=utf-8

from collections import Counter

data = [‘a‘,‘2‘,‘2‘,‘b‘,‘a‘,‘d‘,‘a‘,]

c = Counter(data)

b = Counter(a=1,b=2)

print c

print b

print b+c # c[x] + d[x]

print c-b # subtract(只保留正數計數的元素)

print c&b # 交集: min(c[x], d[x])

print c|b # 并集: max(c[x], d[x])

輸出結果如下:

Counter({‘a‘: 3, ‘2‘: 2, ‘b‘: 1, ‘d‘: 1})

Counter({‘b‘: 2, ‘a‘: 1})

Counter({‘a‘: 4, ‘b‘: 3, ‘2‘: 2, ‘d‘: 1})

Counter({‘a‘: 2, ‘2‘: 2, ‘d‘: 1})

Counter({‘a‘: 1, ‘b‘: 1})

Counter({‘a‘: 3, ‘2‘: 2, ‘b‘: 2, ‘d‘: 1})

(4)其它

Counter類返回值跟字典很類似,所以字典類的方法對Counter對象也適用。如下:#coding=utf-8

from collections import Counter

data = [‘a‘,‘2‘,2,4,5,‘2‘,‘b‘,4,7,‘a‘,5,‘d‘,‘a‘,‘z‘]

c = Counter(data)

print c.keys()

print c.has_key(‘a‘)

print c.get(‘a‘)

print c.items()

print c.values()

print c.viewitems()

print c.viewkeys()

輸出如下:

[‘a‘, 2, ‘b‘, 4, 5, 7, ‘2‘, ‘z‘, ‘d‘]

True

3

[(‘a‘, 3), (2, 1), (‘b‘, 1), (4, 2), (5, 2), (7, 1), (‘2‘, 2), (‘z‘, 1), (‘d‘, 1)]

[3, 1, 1, 2, 2, 1, 2, 1, 1]

dict_items([(‘a‘, 3), (2, 1), (‘b‘, 1), (4, 2), (5, 2), (7, 1), (‘2‘, 2), (‘z‘, 1), (‘d‘, 1)])

dict_keys([‘a‘, 2, ‘b‘, 4, 5, 7, ‘2‘, ‘z‘, ‘d‘])

這只是其中一部分,其它的方法可以參考字典類的方法。

另外,Counter對象還支持工廠函數操作set()、list()、dict().

有時間再補充介紹collections模塊中其它的類

原文地址:http://11026142.blog.51cto.com/11016142/1851791

總結

以上是生活随笔為你收集整理的python在统计专业的应用_Python:使用Counter进行计数统计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。