Доброго времени суток, читатели, зрители моего канала 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, /) — линейная регрессия, возвращает наклон и точку пересечения аргументов простой линейной регрессии двух последовательностей.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.