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

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

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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)
----------------------------------------------------------------------
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})
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)
------------------------------------------------------------------------
txt = open('文件x').read()#打开文件x;
Counter(re.split('\W+', txt))#对txt数据进行分割后,得到一个list,并将list内元素种类和数量进行统计;
c.most_common(10)#将字典c1内数量最多的10个元素;
### Python中计算列表中特定元素数量的方法Python中,有多种方式可以用来计算列表中特定元素的数量。一种简单而有效的方式是利用`count()`方法,该方法返回指定元素在列表中出现的次数。 对于更复杂的需求或当处理的数据结构较为特殊时,则可能需要用到其他技术手段。例如,可以通过列表推导式结合条件判断来实现这一目标[^2]。下面给出几种不同的解决方案: #### 方法一:使用 `count()` 这是最直接也是最容易理解的一种做法。只需要调用列表对象自带的`count()`方法即可完成任务。 ```python my_list = ['apple', 'banana', 'orange', 'apple'] target_element = 'apple' occurrences = my_list.count(target_element) print(f"'{target_element}' occurs {occurrences} times.") ``` 这种方法适用于大多数情况下简单的元素计数需求。 #### 方法二:使用列表推导式与条件表达式 此法灵活性更高一些,尤其适合于那些需要额外逻辑判断的情况。通过创建一个新的布尔值列表并对其求和,也可以达到相同的效果。 ```python my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] condition = lambda x: x == 5 count = sum(1 for element in my_list if condition(element)) print(count) ``` 这里定义了一个匿名函数作为筛选条件,并将其应用于每一个列表项上;最终的结果即为符合条件项目的总数。 #### 方法三:使用第三方库 `statistics` 虽然这个例子主要针对的是数值型数据集的操作,但是它展示了如何借助外部模块的力量来进行更加复杂的统计分析工作。不过需要注意的是,在仅仅为了统计某单一元素频率的情况下引入整个库显得有些大材小用了。 ```python import statistics as st sequence = [1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 9, 10] frequency_of_five = len([num for num in sequence if num == 5]) mean_frequency = frequency_of_five / len(sequence) print(f"The number of fives is {frequency_of_five}, and its relative frequency (mean) is approximately {mean_frequency:.2f}.") ``` 上述代码片段不仅统计了数字'5'在整个序列里出现了多少次,还进一步计算出了其相对频度(均值)。当然这一步骤并非总是必要的,视具体应用场景而定。 综上所述,根据实际问题的特点选择合适的技术方案是非常重要的。对于单纯想要知道某个固定值在一个给定范围内重复了多少回的情形来说,推荐优先考虑内置的`count()`功能,因为它既高效又易于维护。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值