zoukankan      html  css  js  c++  java
  • Python:如何统计序列中元素的出现频度

    例1:从随机列表中,找到找到出现次数最高的3个元素,及出现次数

    方法一:

    from random import randint
    date = [randint(0, 20) for _ in range(100)]
    c = dict.fromkeys(date, 0)
    for x in date:
    c[x] += 1
    c2 = sorted(c.items(), key = lambda k:k[1])
    c3 = c2[len(c2)-3:]
    print(c3)
    1. date = [randint(0, 20) for _ in range(100)]:在0~20间,随机生产一个长度100的列表;
    2. dict.fromkeys(date, 0):以列表的值(不重复使用)做key,以0做值,生产字典;
    3. for x in date:
      c[x] += 1:统计随机list中各元素数量;
    4. c2 = sorted(c.items(), key = lambda k:k[1]):对统计的元素数量进行排序,以[(key,value)]形式;
    5. c3 = c2[len(c2)-3:]:返回最后3组数据,为目标结果;

    方法二:使用collections下的Counter对象

    from collections import Counter
    from random import randint
    date = [randint(0, 20) for _ in range(100)]
    c1 = Counter(date)
    c2 = c1.most_common(3)
    print(c2)
    1. Counter(date):直接得到date中元素种类和数量,Counter({0: 7, 14: 7, 15: 7, 17: 7, 13: 6, 11: 6, 12: 5, 6: 5, 8: 5, 9: 5, 20: 4, 16: 4, 1: 4, 19: 4, 7: 4, 3: 4, 2: 4, 18: 3, 5: 3, 4: 3, 10: 3})
    2. c1.most_common(3),返回出现频率最多的3组数据;

    例2:统计一片英文文章中,出现频度最高的10个单词,及出现次数

    import re

    txt = open('文件x').read()

    c = Counter(re.split('W+', txt))

    c1 = c.most_common(10)
    print(c1)
    1. txt = open('文件x').read():打开文件x;
    2. Counter(re.split('W+', txt)):对txt数据进行分割后,得到一个list,并将list内元素种类和数量进行统计;
    3. c.most_common(10):将字典c1内数量最多的10个元素;
  • 相关阅读:
    Linux下OpenSSL自签ssl证书
    戌蛤怒触铁铁树
    Python自动化办公-自动化操作Excell-openpyxl
    Python正则表达式
    Django中F查询
    如何知道自家的宽带是多少兆?
    ‘Diango中明明模版的名称写的是对的,但是访问url的时候发现没调用模版’解决方案
    Django中的聚合函数
    Django中的跨关系查询
    【RabbitMQ】零、Windows64位安装
  • 原文地址:https://www.cnblogs.com/volcao/p/8727455.html
Copyright © 2011-2022 走看看