Python Counter对象的概率计算

Python Counter对象的概率计算,前面在两个独立的过程中读取了数据并计算了汇总信息。有时需要在读取初始化数据时创建汇总信息,这种优化能节省处理时间。可以编写一个更复杂的输入约分操作,来计算所有总数、轮换总数和缺陷类型总数。每次将这些Counter对象构建为一项。

前面重点介绍了使用Counter实例,因为它们很灵活。对于数据采集的任何更改仍然会创建出Counter实例,并且不会更改后续的分析。

按轮换和按缺陷类型计算的缺陷概率如下:

from fractions import Fraction
P_shift = {
    shift: Fraction(shift_totals[shift], total)
    for shift in sorted(shift_totals)
}
P_type = {
    type: Fraction(type_totals[type], total)
    for type in sorted(type_totals)
}

这样就创建了两个映射:P_shiftP_type。字典P_shift将轮换映射到一个表示轮换在总缺陷个数中占比的Fraction对象。类似地,字典P_type将缺陷类型映射到一个表示类型在总缺陷个数中占比的Fraction对象。

选用了Fraction对象来保留所有输入值的精度,因为在处理这样的计数时,我们希望得到更直观的概率值,方便人们查看数据。

数据P_shift的值如下所示:

{'1': Fraction(94, 309), '2': Fraction(32, 103),
 '3': Fraction(119, 309)}

数据P_type的值如下所示:

{'A': Fraction(74, 309), 'B': Fraction(23, 103),
 'C': Fraction(128, 309), 'D': Fraction(38, 309)}

对于一些人来说,32/103或96/309这样的值比0.3106更有意义。从Fraction对象中获得float值很容易,稍后将展示这一点。

Python 3.6中,字典中的键将保留源数据中键的顺序。在之前的Python版本中,键的顺序是不可预测的。在这个示例中,顺序无关紧要,但当键的顺序可预测时,会有助于调试工作。

所有轮换似乎与缺陷产出处于同一水平。缺陷类型变化无常,这是典型的情况。缺陷C似乎是相对常见的问题,缺陷B则不那么常见,也许第二个缺陷在更复杂的情况下才会出现。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程