Skip to content

Easy Stats

py_simple.easy_stats

Beginner-friendly helpers for common statistics operations.

data_range(nums)

Returns the difference between the largest and smallest numbers.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required

Returns:

Name Type Description
float float

The difference between max and min.

Raises:

Type Description
ValueError

If the list is empty.

Example
from py_simple import data_range

result = data_range([4, 1, 8, 2])  # -> 7
nums = [4, 1, 8, 2]
result = max(nums) - min(nums)

median(nums)

Returns the middle value of a list of numbers.

With an even count, the mean of the two middle values is returned.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required

Returns:

Name Type Description
float float

The median value.

Raises:

Type Description
ValueError

If the list is empty.

Example
from py_simple import median

result = median([4, 1, 9, 2])  # -> 3.0
nums = sorted([4, 1, 9, 2])
mid = len(nums) // 2
result = nums[mid] if len(nums) % 2 else (nums[mid - 1] + nums[mid]) / 2

mode(nums)

Returns the number that appears most often in a list.

If several numbers tie, the one that appears first is returned.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required

Returns:

Name Type Description
float float

The most frequent number.

Raises:

Type Description
ValueError

If the list is empty.

Example
from py_simple import mode

result = mode([2, 1, 2, 3])  # -> 2
from collections import Counter

nums = [2, 1, 2, 3]
result = Counter(nums).most_common(1)[0][0]

percentile(nums, percent)

Returns the value below which the given percent of numbers fall.

Uses the nearest-rank method.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required
percent float

The percentile, from 0 to 100.

required

Returns:

Name Type Description
float float

The value at the given percentile.

Raises:

Type Description
ValueError

If the list is empty or percent is outside 0-100.

Example
from py_simple import percentile

result = percentile([1, 2, 3, 4], 75)  # -> 3
import math

nums, percent = [1, 2, 3, 4], 75
ordered = sorted(nums)
result = ordered[max(0, math.ceil(len(ordered) * percent / 100) - 1)]

standard_deviation(nums)

Returns how far numbers typically sit from the average.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required

Returns:

Name Type Description
float float

The square root of the sample variance.

Raises:

Type Description
ValueError

If the list has fewer than two numbers.

Example
from py_simple import standard_deviation

result = standard_deviation([1, 2, 3])  # -> 1.0
from statistics import stdev

nums = [1, 2, 3]
result = stdev(nums)

variance(nums)

Returns how spread out the numbers are, as sample variance.

Parameters:

Name Type Description Default
nums list[float]

List of numbers.

required

Returns:

Name Type Description
float float

The sample variance, using n - 1 as the divisor.

Raises:

Type Description
ValueError

If the list has fewer than two numbers.

Example
from py_simple import variance

result = variance([1, 2, 3])  # -> 1.0
nums = [1, 2, 3]
mean = sum(nums) / len(nums)
result = sum((num - mean) ** 2 for num in nums) / (len(nums) - 1)