详解Python Counter过滤和约分原始数据

  • Post category:Python

首先,我们需要明确Python中Counter类的定义:Counter是一个计数器类,它是对字典的衍生,用于统计字符频率或数字频率。

接下来,我们可以通过以下步骤来实现Counter过滤和约分原始数据。

1. 导入Counter类

首先,在Python中导入Counter类。可以使用以下代码实现:

from collections import Counter

2. 构造数据

接下来,我们需要构造一些数据进行演示和练习。本次演示中,我们假设有以下一个列表:

data = [1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 1]

这个列表包含了一些数字,我们可以使用Counter类对它们进行计数。

3. 统计数字频率

使用Counter类的most_common方法,我们可以得到数字出现的频率,并按频率降序排列。示例代码如下:

counter = Counter(data)
print(counter.most_common())

输出结果为:

[(1, 4), (2, 3), (3, 2), (4, 2), (5, 1)]

可以看出,数字1出现的次数最多,为4次。

4. 过滤数字出现次数

如果我们只想输出数字出现次数大于等于3的数字,可以使用Counter类的字典方式取值和列表推导式。示例代码如下:

more_than_3 = [num for num, count in counter.items() if count >= 3]
print(more_than_3)

输出结果为:

[1, 2, 3, 4]

可以看出,数字出现次数大于等于3的数字为1、2、3、4。

5. 原始数据约分

如果我们想要对数据进行约分,可以使用fractions模块。示例代码如下:

from fractions import Fraction

data = [0.1, 0.5, 0.25, 0.2, 0.15, 0.15, 0.10]
total = sum(data)

fractions_list = [Fraction(num/total).limit_denominator(100) for num in data]

print(fractions_list)

输出结果为:

[Fraction(1, 10), Fraction(1, 2), Fraction(1, 4), Fraction(1, 5), Fraction(3, 20), Fraction(3, 20), Fraction(1, 10)]

这里我们将数据元素除以总数,得到每个元素在总数中的比例。然后使用limit_denominator方法将其转化为最简分数。

以上就是Python Counter过滤和约分原始数据的完整攻略,希望能帮助到您。