天天看点

【python数据处理】针对列表元素进行计数的多种方法

针对列表元素进行计数的多种方法

  • ​​0 测试数据​​
  • ​​1 使用第三方模块​​
  • ​​1.1 借助numpy模块​​
  • ​​1.2 借助pandas模块​​
  • ​​2 借助本地collections模块​​
  • ​​3 仅使用python基础语法进行计数​​
  • ​​3.1 借助字典数据结构​​
  • ​​3.2 借助集合数据结构​​

0 测试数据

# 测试数据
ls = [1,2,3,2,1,2,4,5,4,5,2,5]      
【python数据处理】针对列表元素进行计数的多种方法

1 使用第三方模块

1.1 借助numpy模块

import numpy as np
np.unique(ls,return_counts=True)      

输出结果为:

【python数据处理】针对列表元素进行计数的多种方法

1.2 借助pandas模块

import pandas as pd
pd.Series(ls).value_counts().to_dict()      

输出结果为:

【python数据处理】针对列表元素进行计数的多种方法

2 借助本地collections模块

python中自带的collections模块可以实现很多关于数值的操作运算,比如里面的Counter方法,就可以实现快速计数

#方式三:使用python自带的标准模块
from collections import Counter
c = Counter(ls)
c

c.most_common(2)

dict(c)      

输出结果如下:

【python数据处理】针对列表元素进行计数的多种方法

3 仅使用python基础语法进行计数

3.1 借助字典数据结构

第一种: 核心是借助字典中的​

​fromkeys()​

​方法,创建一个各唯一元素对应值为0的字典

#第一种:先创建一个各唯一元素对应值为0的字典
dic = dict.fromkeys(ls,0)
print('初始化的空值字典:',dic)
for k in ls:
    dic[k] += 1
print('完成计数后的字典:',dic)      
【python数据处理】针对列表元素进行计数的多种方法

第二种:借助字典的​

​get()​

​方法

#①
dic = {}
for k in ls:
    dic[k] = dic.get(k,0)+1
print(dic)

# ②
dic = {}
for k in ls:
    if k in dic:
        dic[k] += 1
    else:
        dic[k] = 1
print(dic)      

输出结果如下

【python数据处理】针对列表元素进行计数的多种方法

3.2 借助集合数据结构

s = set(ls)
ls = []
for i in s:
    ls.append((i,ls.count(i)))
ls