Counter 计数比 list 简化多了,为什么呢?今天番茄加速就来解析一下。
Counter 正如名字那样,它的主要功能就是计数。这听起来简单,但是我们在分析数据时,基本都会涉及计数,真的家常便饭。
习惯使用 list 的看过来,有一些数值已经放在一个 list 中:
skuPurchaseCount = [3, 8, 3, 10, 3, 3, 1, 3, 7, 6, 1, 2, 7, 0, 7, 9, 1, 5, 1, 0]
In [33]: for i in skuPurchaseCount:
...: if countdict.get(i) is None:
...: countdict[i]=1
...: else:
...: countdict[i]+=1
In [34]: countdict
Out[34]: {3: 5, 8: 1, 10: 1, 1: 4, 7: 3, 6: 1, 2: 1, 0: 2, 9: 1, 5: 1}
如果使用 Counter,我们可以写出更简化的代码:
In [35]: from collections import Counter
In [42]: Counter(skuPurchaseCount).most_common()
Out[42]:
[(3, 5),(1, 4),(7, 3),(0, 2),(8, 1),(10, 1),(6, 1),(2, 1),(9, 1),(5, 1)]
仅仅一行代码,我们便输出统计计数结果,并且是一个按照次数统计出来的由大到小排序好的 tuples 列表,因此我们很快就会看到,购买 3 次是出现最多的,一共 5 次。
购买为 1 次的占多数,属于长尾。