From 45729d31baadf3f37d0c88b575c1200cea9a9ddf Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Thu, 17 Nov 2022 10:48:11 -0800 Subject: [PATCH] Fix stdev. --- src/pyutils/math_utils.py | 6 ++--- src/pyutils/types/histogram.py | 40 ++++++++++++++++------------------ 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/pyutils/math_utils.py b/src/pyutils/math_utils.py index 40c6df9..2a56b63 100644 --- a/src/pyutils/math_utils.py +++ b/src/pyutils/math_utils.py @@ -40,7 +40,7 @@ class NumericPopulation(object): >>> pop.get_mean() 5.2 >>> round(pop.get_stdev(), 1) - 1.4 + 3.1 >>> pop.get_percentile(20) 3 >>> pop.get_percentile(60) @@ -138,7 +138,7 @@ class NumericPopulation(object): for n in self.highers: variance += (n - mean) ** 2 count = len(self.lowers) + len(self.highers) - return math.sqrt(variance) / count + return math.sqrt(variance / count) def _create_sorted_copy_if_needed(self, count: int): """Internal helper.""" @@ -314,7 +314,7 @@ def is_prime(n: int) -> bool: return True -if __name__ == '__main__': +if __name__ == "__main__": import doctest doctest.testmod() diff --git a/src/pyutils/types/histogram.py b/src/pyutils/types/histogram.py index ca77cc0..55abd69 100644 --- a/src/pyutils/types/histogram.py +++ b/src/pyutils/types/histogram.py @@ -8,30 +8,28 @@ This is a text-based histogram class. It creates output like this: A Histogram helper class. Creates outputs like this:: - [4..5): ▏ ( 0.16% n=1) - [5..6): ██▍ ( 0.64% n=4) - [6..7): ██████▏ ( 1.60% n=10) - [7..8): ████████████▍ ( 3.20% n=20) - [8..9): █████████████████████▊ ( 5.60% n=35) - [9..10): ████████████████████████████████▍ ( 8.32% n=52) - [10..11): ██████████████████████████████████████████▍ (10.88% n=68) - [11..12): █████████████████████████████████████████████████▉ (12.80% n=80) - [12..13): ████████████████████████████████████████████████████▉ (13.60% n=85) - [13..14): █████████████████████████████████████████████████▉ (12.80% n=80) - [14..15): ██████████████████████████████████████████▍ (10.88% n=68) - [15..16): ████████████████████████████████▍ ( 8.32% n=52) - [16..17): █████████████████████▊ ( 5.60% n=35) - [17..18): ████████████▍ ( 3.20% n=20) - [18..19): ██████▏ ( 1.60% n=10) - [19..20): ██▍ ( 0.64% n=4) - [20..21): ▏ ( 0.16% n=1) + [5..6): ▏ ( 0.10% n=1) + [6..7): █▋ ( 0.49% n=5) + [7..8): █████▏ ( 1.46% n=15) + [8..9): ███████████▉ ( 3.42% n=35) + [9..10): ██████████████████████▏ ( 6.35% n=65) + [10..11): ██████████████████████████████████▌ ( 9.86% n=101) + [11..12): ██████████████████████████████████████████████▏ (13.18% n=135) + [12..13): ████████████████████████████████████████████████████▉ (15.14% n=155) + [13..14): ████████████████████████████████████████████████████▉ (15.14% n=155) + [14..15): ██████████████████████████████████████████████▏ (13.18% n=135) + [15..16): ██████████████████████████████████▌ ( 9.86% n=101) + [16..17): ██████████████████████▏ ( 6.35% n=65) + [17..18): ███████████▉ ( 3.42% n=35) + [18..19): █████▏ ( 1.46% n=15) + [19..20): █▋ ( 0.49% n=5) + [20..21): ▏ ( 0.10% n=1) -------------------------------------------------------------------------------- - [4..21): pop(Σn)=625 - mean(μ)=12.000 + [5..21): pop(Σn)=1024 + mean(μ)=12.500 median(p50)=12.000 mode(Mo)=12.000 - stdev(σ)=0.113 - + stdev(σ)=2.500 """ import math -- 2.45.2