在專案中經常會遇見需要計數的情況,最近在看《利用python進行資料分析》這裡面提到了三個計數方法:
方法一: 遍曆法
def
get_counts
(sequence):
counts = {}
for x in sequence:
if x in counts:
counts[x] += 1
else:
counts[x] = 1
return counts
這是最常規的方法,乙個乙個數咯
方法二: defaultdict
這裡用到了coollections 庫
from collections import defaultdict
defget_counts2
(sequence):
counts = defaultdict(int) #所有值被初始化為0
for x in sequence:
counts[x] += 1
return counts
最後得到的是 元素:個數 的乙個字典
方法三:value_counts()
這個方法是pandas 中的 ,所以使用時候需要先導入pandas ,該方法會對元素計數,並按從大到小的順序排列
tz_counts = frame['tz'].value_counts()
tz_counts[:10]
>>>
america/new_york 1251
521america/chicago 400
america/los_angeles 382
america/denver 191
europe/london 74
asia/tokyo 37
pacific/honolulu 36
europe/madrid 35
america/sao_paulo 33
name: tz, dtype: int64
我們看一下官方文件中的說明
series.value_counts(normalize=false, sort=true, ascending=false, bins=none, dropna=true)[source]¶
returns object containing counts of unique values.
這裡說明一下返回的資料是series 格式的
總的來說 方法一最為普通 如果資料量比較大的話 非常費時間 ,方法三對資料的格式有要求 ,所以推薦使用方法二
計數dp小結
序 除了剛開始的看了幾道題的題解,後來也自己肛出了幾道 剩下不可做的題不也沒做嗎 這些題目最大的特點是在於需要自己構造狀態,這往往會成為一道題的最大卡點 窮舉表示水不到幾分 題目選講 e 如果直接模擬,複雜度為k n2既然每一步只能往上下或往左右走,那麼我們可以把題目分解為在x軸上行走k步與在y軸上...
python小結 python小結
c python33新增到你的path 環境變數中,你可以在dos 視窗中 輸入以下命令 set path path c python33 id 方法的返回值就是物件的記憶體位址。在 行 首行 後插入至少一行特殊的注釋行來定義原始檔的編碼。coding encoding sys.modules 模組...
python計數排序 Python 計數排序
1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...