Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Простая статистика на python, модуль statistics

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Вспомните также и математику

Статистика на python, модуль statistics

Вернулся к старым незаконченным темам. Всё равно нужно ведь заканчивать. Тем более планирую в будущем сложные библиотеки для обработки массивов данных, а тут модуль statistics, стандартный модуль ещё не рассматривал.

Надо сказать, что простые статистические характеристики можно и так легко вычислить. Например, max() - вычисление максимума в наборе, min() - вычисление минимума в наборе, sum() - вычисление суммы элементов, len() - вычислить количество элементов в наборе. Соответственно, можно легко вычислить простое среднее:

sum(ls) / len(ls), ls - список, состоящий из числовых элементов.

Но даже в простой статистике есть довольно много разных величин, о которых не все знают, а чтобы узнать и написать функцию для вычисления нужно время. Поэтому есть такая стандартная библиотека statistics. Подключается стандартно:

import statistics

Кстати, в версии Python 3.10 библиотека сильно пополнилась.

Конечно, рассказывать подробно о тех статистических величинах, которые можно вычислять с помощью это библиотеки я не буду. Но краткую информацию дам, с примерами, естественно. Аргументом функций ниже является набор или итерационная величина.

  • statistics.mean() — вычисляет приблизительное среднее из набора.
  • statistics.fmean() — преобразует элементы массива в вещественные числа. а потом производит вычисление среднего.
  • statistics.geometric_mean() — вычисляет среднее геометрическое. Формула очень проста. Перемножаются все элемента набора, а потом берётся из результата корень степени, равный количество элементов.
  • statistics.harmonic_mean(ls, weights=None) — среднее гармоническое. weights - веса элементов. Параметр появился с версии 3.10. Среднее гармоническое есть обратная величина к среднему от обратных к числам.
  • statistics.median() — возвращает медиану (среднее значение) числовой последовательности, используя общий метод “среднее из двух средних”.
  • statistics.median_low(), statistics.median_high() — вычисление наименьшей и наибольшей медианы.
  • statistics.median_grouped() — медиана сгруппированных данных.

Пример программы с некоторыми статистическими функциями

#!/usr/bin/python3
import statistics as st
ls = [1, 2, 3, 4, 4, 2, 5, 10]
print(st.mean(ls))
print(st.fmean(ls))
print(st.geometric_mean(ls))
print(st.harmonic_mean(ls))
print(st.median(ls))
print(st.median_low(ls))
print(st.median_high(ls))

Результат выполнения

3.875
3.875
3.1461824498397313
2.5531914893617023
3.5
3
4

Продолжаем список функций библиотеки statistics.

  • statistics.mode() — наиболее распространённый элемент последовательности.
  • statistics.multimode() — часто встречающиеся элементы набора.
  • statistics.pstdev() — квадратный корень из дисперсии числовой последовательности.
  • statistics.pvariance() — возвращает дисперсию элементов последовательности.
  • statistics.stdev() — стандартное выборочное отклонение числовой последовательности.
  • statistics.variance(ls, xbar=None) — выборочная дисперсия. xbar - среднее значение, если None, то функция сама вычисляет среднее.
  • statistics.quantiles(ls, *, n=4, method='exclusive') — список интервалов равной вероятности последовательности. n - интервал отсечения данных, method - метод отсечения.

Пример программы

#!/usr/bin/python3
import statistics as st
ar = [4, 5, 7, 10, 30, 40, 11, 50, 3, 7, 8, 10, 15]
print(*ar)
print(st.pstdev(ar))
print(st.pvariance(ar))
print(st.stdev(ar))
print(st.variance(ar))
print(*st.multimode(ar))
print(*st.quantiles(ar))

Результат выполнения

4 5 7 10 30 40 11 50 3 7 8 10 15
14.360943088478992
206.23668639053253
14.947343473777435
223.4230769230769
7 10
6.0 10.0 22.5

  • statistics.NormalDist(mu=0.0, sigma=1.0) — создание нормальных распределений.

dd = st.NormalDist(0.0, 1.0)
print(dd.samples(10))

Результат

[-0.3336692689759241, 0.0009556910384133964, 0.5419384163097695, -0.6641621450236931, -1.2599554874184549, -1.1776421016892398, 0.57482
45496663468, -0.03041204827303434, -1.4261056640966756, -0.1920210066827482]

  • statistics.covariance() — ковариация (мера совместной изменчивости) двух последовательностей (версия 3.10).
  • statistics.correlation(x, y, /, *, method='linear') — коэффициент корреляции двух последовательности. method - метод (версия 3.10).
  • statistics.linear_regression(x, y, /) — линейная регрессия, возвращает наклон и точку пересечения аргументов простой линейной регрессии двух последовательностей.

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Статистика это раздел математики, если кто не знал
Статистика это раздел математики, если кто не знал