Автор оригинала: Doug Hellmann.
Цель:
Реализации общих статистических расчетов.
Модуль statistics
реализует множество общих статистических формул для эффективных вычислений с использованием различных числовых типов Python ( int
, float
, Decimal
и Fraction
).
Средние
Поддерживаются три формы средних значений: среднее значение, медиана и режим. Вычислите среднее арифметическое с помощью mean ()
.
statistics_mean.py
from statistics import * data [1, 2, 2, 5, 10, 12] print('{:0.2f}'.format(mean(data)))
Возвращаемое значение для целых чисел и чисел с плавающей запятой всегда является float
. Для входных данных Decimal
и Fraction
результат имеет тот же тип, что и входные данные.
$ python3 statistics_mean.py 5.33
Вычислите наиболее частую точку данных в наборе данных с помощью mode ()
.
statistics_mode.py
from statistics import * data [1, 2, 2, 5, 10, 12] print(mode(data))
Возвращаемое значение всегда является членом набора входных данных. Поскольку mode ()
обрабатывает ввод как набор дискретных значений и считает повторения, вводимые данные не обязательно должны быть числовыми значениями.
$ python3 statistics_mode.py 2
Существует четыре варианта расчета среднего или среднего значения. Первые три представляют собой простые версии обычного алгоритма с различными решениями для обработки наборов данных с четным числом элементов.
statistics_median.py
from statistics import * data [1, 2, 2, 5, 10, 12] print('median : {:0.2f}'.format(median(data))) print('low : {:0.2f}'.format(median_low(data))) print('high : {:0.2f}'.format(median_high(data)))
median ()
находит центральное значение, и, если в наборе данных есть четное число значений, он усредняет два средних элемента. median_low ()
всегда возвращает значение из набора входных данных, используя нижний из двух средних элементов для наборов данных с четным числом элементов. median_high ()
аналогичным образом возвращает более высокий из двух средних элементов.
$ python3 statistics_median.py median : 3.50 low : 2.00 high : 5.00
Четвертая версия вычисления медианы, median_grouped ()
, обрабатывает входные данные как непрерывные данные и вычисляет медиану 50% процентиля, сначала находя медианный диапазон с использованием предоставленной ширины интервала, а затем выполняя интерполяцию в этом диапазоне с использованием положение фактических значений из набора данных, попадающих в этот диапазон.
statistics_median_grouped.py
from statistics import * data [10, 20, 30, 40] print('1: {:0.2f}'.format(median_grouped(data, interval1))) print('2: {:0.2f}'.format(median_grouped(data, interval2))) print('3: {:0.2f}'.format(median_grouped(data, interval3)))
По мере увеличения ширины интервала изменяется медиана, вычисленная для того же набора данных.
$ python3 statistics_median_grouped.py 1: 29.50 2: 29.00 3: 28.50
Дисперсия
Статистика использует два значения, чтобы выразить, насколько разброс набора значений относительно среднего. Дисперсия – это среднее значение квадрата разницы каждого значения и среднего, а стандартное отклонение – это квадратный корень из дисперсии (что полезно, поскольку квадратный корень позволяет выражать стандартное отклонение в тех же единицах, что и входные данные). Большие значения дисперсии или стандартного отклонения указывают на то, что набор данных рассредоточен, а маленькие значения указывают на то, что данные сгруппированы ближе к среднему значению.
statistics_variance.py
from statistics import * import subprocess def get_line_lengths(): cmd 'wc -l ../[a-z]*/*.py' out subprocess.check_output( cmd, shellTrue).decode('utf-8') for line in out.splitlines(): parts line.split() if parts[1].strip().lower() 'total': break nlines int(parts[0].strip()) if not nlines: continue # skip empty files yield (nlines, parts[1].strip()) data list(get_line_lengths()) lengths [d[0] for d in data] sample lengths[::2] print('Basic statistics:') print(' count : {:3d}'.format(len(lengths))) print(' min : {:6.2f}'.format(min(lengths))) print(' max : {:6.2f}'.format(max(lengths))) print(' mean : {:6.2f}'.format(mean(lengths))) print('\nPopulation variance:') print(' pstdev : {:6.2f}'.format(pstdev(lengths))) print(' pvariance : {:6.2f}'.format(pvariance(lengths))) print('\nEstimated variance for sample:') print(' count : {:3d}'.format(len(sample))) print(' stdev : {:6.2f}'.format(stdev(sample))) print(' variance : {:6.2f}'.format(variance(sample)))
Python включает два набора функций для вычисления дисперсии и стандартного отклонения, в зависимости от того, представляет ли набор данных всю генеральную совокупность или выборку совокупности. В этом примере используется wc
для подсчета количества строк во входных файлах для всех примеров программ, а затем используются pvariance ()
и pstdev () для вычисления дисперсии и стандартного отклонения для всей генеральной совокупности перед использованием
variance ()
и stddev ()
для вычисления выборочной дисперсии и стандартного отклонения для подмножества, созданного с помощью длина каждого второго найденного файла.
$ python3 statistics_variance.py Basic statistics: count : 1282 min : 4.00 max : 228.00 mean : 27.79 Population variance: pstdev : 17.86 pvariance : 319.04 Estimated variance for sample: count : 641 stdev : 16.94 variance : 286.99
Смотрите также
- стандартная библиотечная документация для статистики
- mathtips.com: медиана для данных типа дискретной и непрерывной частоты (сгруппированные данные) – Обсуждение медианы для непрерывных данных
- PEP 450 – добавление модуля статистики в стандартную библиотеку