在项目中经常会遇见需要计数的情况,最近在看《利用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
def get_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
521
America/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 格式的
总的来说 方法一最为普通 如果数据量比较大的话 非常费时间 ,方法三对数据的格式有要求 ,所以推荐使用方法二