예제 #1
0
 def test_merge_stats_with_self(self):
     stats = StatCounter([1.0, 2.0, 3.0, 4.0])
     stats.mergeStats(stats)
     self.assertEqual(stats.count(), 8)
     self.assertEqual(stats.max(), 4.0)
     self.assertEqual(stats.mean(), 2.5)
     self.assertEqual(stats.min(), 1.0)
     self.assertAlmostEqual(stats.stdev(), 1.118033988749895)
     self.assertAlmostEqual(stats.sampleStdev(), 1.1952286093343936)
     self.assertEqual(stats.sum(), 20.0)
     self.assertAlmostEqual(stats.variance(), 1.25)
     self.assertAlmostEqual(stats.sampleVariance(), 1.4285714285714286)
예제 #2
0
class NAStatCounter:
    def __init__(self):
        self.stats = StatCounter()
        self.missing = long(0)

    def add(self, x):
        if x is None:
            self.missing += 1
        else:
            self.stats.merge(x)

        return self

    def mergeStats(self, other):

        self.stats.mergeStats(other.stats)
        self.missing += other.missing

        return self

    def __repr__(self):
        return "stats: {0}, NaN: {1}".format(self.stats, self.missing)
class NAStatCounter:

    def __init__(self):
        self.stats = StatCounter()
        self.missing = long(0)

    def add(self, x):
        if x is None:
            self.missing += 1
        else:
            self.stats.merge(x)

        return self

    def mergeStats(self, other):

        self.stats.mergeStats(other.stats)
        self.missing += other.missing

        return self

    def __repr__(self):
        return "stats: {0}, NaN: {1}".format(self.stats, self.missing)
예제 #4
0
 def test_merge_stats(self):
     stats1 = StatCounter([1.0, 2.0, 3.0, 4.0])
     stats2 = StatCounter([1.0, 2.0, 3.0, 4.0])
     stats = stats1.mergeStats(stats2)
     self.assertEqual(stats.count(), 8)
     self.assertEqual(stats.max(), 4.0)
     self.assertEqual(stats.mean(), 2.5)
     self.assertEqual(stats.min(), 1.0)
     self.assertAlmostEqual(stats.stdev(), 1.118033988749895)
     self.assertAlmostEqual(stats.sampleStdev(), 1.1952286093343936)
     self.assertEqual(stats.sum(), 20.0)
     self.assertAlmostEqual(stats.variance(), 1.25)
     self.assertAlmostEqual(stats.sampleVariance(), 1.4285714285714286)
     execution_statements = [
         StatCounter([1.0, 2.0]).mergeStats(StatCounter(range(1, 301))),
         StatCounter(range(1, 301)).mergeStats(StatCounter([1.0, 2.0])),
     ]
     for stats in execution_statements:
         self.assertEqual(stats.count(), 302)
         self.assertEqual(stats.max(), 300.0)
         self.assertEqual(stats.min(), 1.0)
         self.assertAlmostEqual(stats.mean(), 149.51324503311)
         self.assertAlmostEqual(stats.variance(), 7596.302804701549)
         self.assertAlmostEqual(stats.sampleVariance(), 7621.539691095905)