Basic Statistics Operations¶
Zero-dependency Python snippets for basic statistics using the standard library.
9 snippets available in this sub-category.
Simple¶
Calculate mean, median, and mode¶
math
statistics
mean
median
mode
basic
Calculate mean, median, and mode
import statistics
def mean(values):
"""Calculate arithmetic mean."""
return statistics.mean(values)
def median(values):
"""Calculate median value."""
return statistics.median(values)
def mode(values):
"""Calculate mode (most common value)."""
return statistics.mode(values)
def multimode(values):
"""Return a list of the most common value(s)."""
return statistics.multimode(values)
# Examples
nums = [1, 2, 2, 3, 4]
print(f"Mean: {mean(nums)}") # 2.4
print(f"Median: {median(nums)}") # 2
print(f"Mode: {mode(nums)}") # 2
print(f"Multimode: {multimode(nums)}") # [2]
Notes
- Uses statistics module
- Handles lists, tuples, iterables
- Multimode for multiple modes
- Returns float or int as appropriate
Calculate min, max, and range¶
math
statistics
min
max
range
basic
Find min, max, and range of data
def minimum(values):
"""Find minimum value."""
return min(values)
def maximum(values):
"""Find maximum value."""
return max(values)
def data_range(values):
"""Calculate range (max - min)."""
return max(values) - min(values)
# Examples
nums = [5, 1, 9, 3, 7]
print(f"Min: {minimum(nums)}") # 1
print(f"Max: {maximum(nums)}") # 9
print(f"Range: {data_range(nums)}") # 8
Notes
- Simple built-in functions
- Useful for quick summaries
Calculate sum, count, and average¶
math
statistics
sum
count
average
basic
Calculate sum, count, and average
def total(values):
"""Calculate sum of values."""
return sum(values)
def count(values):
"""Count number of values."""
return len(values)
def average(values):
"""Calculate average (mean) value."""
return sum(values) / len(values) if values else 0
# Examples
nums = [2, 4, 6, 8]
print(f"Sum: {total(nums)}") # 20
print(f"Count: {count(nums)}") # 4
print(f"Average: {average(nums)}") # 5.0
Notes
- Built-in sum and len
- Handles empty lists (average returns 0)
Complex¶
Calculate weighted mean and harmonic mean¶
math
statistics
weighted-mean
harmonic-mean
average
Calculate weighted mean and harmonic mean
import statistics
def weighted_mean(values, weights):
"""Calculate weighted mean."""
return statistics.fmean([v * w for v, w in zip(values, weights)]) / statistics.fmean(weights)
def harmonic_mean(values):
"""Calculate harmonic mean."""
return statistics.harmonic_mean(values)
# Examples
values = [10, 20, 30]
weights = [1, 2, 3]
print(f"Weighted mean: {weighted_mean(values, weights):.2f}") # 23.33
print(f"Harmonic mean: {harmonic_mean(values):.2f}") # 16.36
Notes
- Weighted mean for weighted data
- Harmonic mean for rates, ratios
Calculate geometric mean and midrange¶
math
statistics
geometric-mean
midrange
average
Calculate geometric mean and midrange
import statistics
def geometric_mean(values):
"""Calculate geometric mean."""
return statistics.geometric_mean(values)
def midrange(values):
"""Calculate midrange (average of min and max)."""
return (min(values) + max(values)) / 2
# Examples
nums = [1, 3, 9]
print(f"Geometric mean: {geometric_mean(nums):.2f}") # 3.0
print(f"Midrange: {midrange(nums)}") # 5.0
Notes
- Geometric mean for multiplicative data
- Midrange for quick center estimate
Frequency, unique values, and counts¶
math
statistics
frequency
unique
counts
Calculate frequency, unique values, and counts
from collections import Counter
def frequency_table(values):
"""Return frequency table as dict."""
return dict(Counter(values))
def unique_values(values):
"""Return sorted list of unique values."""
return sorted(set(values))
def value_counts(values):
"""Return list of (value, count) pairs."""
return Counter(values).most_common()
# Examples
nums = [1, 2, 2, 3, 3, 3]
print(f"Frequency: {frequency_table(nums)}") # {1: 1, 2: 2, 3: 3}
print(f"Unique: {unique_values(nums)}") # [1, 2, 3]
print(f"Counts: {value_counts(nums)}") # [(3, 3), (2, 2), (1, 1)]
Notes
- Counter for frequency analysis
- Useful for categorical data
Edge Cases¶
Handle edge cases in statistics¶
math
statistics
error-handling
edge-case
validation
Robust statistics with edge case handling
import statistics
def safe_mean(values):
"""Safe mean calculation with empty list handling."""
return statistics.mean(values) if values else 0
def safe_median(values):
"""Safe median calculation with empty list handling."""
return statistics.median(values) if values else 0
def safe_mode(values):
"""Safe mode calculation with error handling."""
try:
return statistics.mode(values)
except statistics.StatisticsError:
return None
# Test edge cases
print(safe_mean([])) # 0
print(safe_median([])) # 0
print(safe_mode([])) # None
Notes
- Handles empty lists
- Returns 0 or None for empty input
- Avoids exceptions in user-facing code
Performance comparison¶
math
statistics
performance
benchmarking
Benchmark statistics calculations
import time
import statistics
def benchmark_statistics_methods():
"""Benchmark mean, median, and mode calculations."""
nums = list(range(1000)) * 100
start = time.time()
statistics.mean(nums)
mean_time = time.time() - start
start = time.time()
statistics.median(nums)
median_time = time.time() - start
start = time.time()
statistics.mode(nums)
mode_time = time.time() - start
print(f"Mean: {mean_time:.6f}s, Median: {median_time:.6f}s, Mode: {mode_time:.6f}s")
# benchmark_statistics_methods()
Notes
- Performance comparison
- Useful for large datasets
Practical Examples¶
Grade calculation and summary statistics¶
math
statistics
grades
summary
report
Calculate grades and summary statistics
import statistics
def data_range(values):
# Function is defined in one of the above code block
pass
def calculate_grades(scores):
"""Calculate mean, median, and mode for grades."""
return {
"mean": statistics.mean(scores),
"median": statistics.median(scores),
"mode": statistics.multimode(scores),
}
def summary_statistics(values):
"""Return summary statistics for a dataset."""
return {
"count": statistics.count(values),
"min": statistics.minimum(values),
"max": statistics.maximum(values),
"mean": statistics.mean(values),
"median": statistics.median(values),
"mode": statistics.multimode(values),
"range": data_range(values),
}
# Examples
grades = [88, 92, 76, 81, 92, 85, 76]
print(f"Grade stats: {calculate_grades(grades)}")
print(f"Summary: {summary_statistics(grades)}")
Notes
- Grade calculation
- Summary for reports
- Useful for education, analytics
🔗 Cross-References¶
- Reference: See 📂 Statistics Advanced
- Reference: See 📂 Round Number
- Reference: See 📂 Format Number
- Reference: See 📂 Percentage
🏷️ Tags¶
math
, statistics
, mean
, median
, mode
, summary
, grades
, performance
, edge-case
, best-practices
📝 Notes¶
- Basic Statistics Support Data Analysis and Reporting
- Use for Summaries, Grades, and Quick Insights
- Edge Case Handling Ensures Robustness
- Performance Suitable for Large Datasets