numpy.std
Вычислите стандартное отклонение вдоль указанной оси.
Возвращает стандартное отклонение, меру разброса распределения элементов массива. Стандартное отклонение вычисляется для сглаженного массива по умолчанию, в противном случае по указанной оси.
Parameters aarray_like
Рассчитайте стандартное отклонение этих значений.
axisNone или int или кортеж целых чисел, необязательно
Ось или оси, вдоль которых вычисляется стандартное отклонение. По умолчанию вычисляется стандартное отклонение сглаженного массива.
Новое в версии 1.7.0.
Если это кортеж целых чисел, стандартное отклонение выполняется по нескольким осям, а не по одной оси или по всем осям, как раньше.
dtypedtype, optional
Тип для использования при вычислении стандартного отклонения. Для массивов целочисленного типа значение по умолчанию — float64, для массивов типа float — то же, что и тип массива.
outndarray, optional
Альтернативный выходной массив, в который следует поместить результат. Он должен иметь ту же форму, что и ожидаемый результат, но при необходимости тип (вычисленных значений) будет преобразован.
ddofint, optional
Означает дельта степеней свободы. В расчетах используется делитель N — ddof , где N представляет количество элементов. По умолчанию ddof равен нулю.
keepdimsbool, optional
Если установлено значение True, уменьшенные оси остаются в результате как размеры с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.
Если передано значение по умолчанию, то keepdims не будет передан методу std подклассов ndarray , однако любое значение, отличное от значения по умолчанию, будет передано. Если метод подкласса не реализует keepdims , возникнут какие-либо исключения.
гдеarray_like из bool, опционально
Элементы для включения в стандартное отклонение. Для получения подробной информации см. reduce .
Новое в версии 1.20.0.
Returns standard_deviationndarray, см. параметр dtype выше.
Если out равен None, вернуть новый массив, содержащий стандартное отклонение, в противном случае вернуть ссылку на выходной массив.
Н1482Н, П2646П, К3138К, Л4391Л, Н5031Н Определение типа выхода
Notes
Стандартное отклонение представляет собой квадратный корень из среднего значения квадратов отклонений от среднего, i.e., std = sqrt(mean(x)) , где x = abs(a — a.mean())**2 .
Среднеквадратичное отклонение обычно рассчитывается как x.sum() / N , где N = len(x) . Если же указан ddof , вместо него используется делитель N — ddof . В стандартной статистической практике ddof=1 обеспечивает несмещенную оценку дисперсии бесконечной совокупности. ddof=0 обеспечивает оценку максимального правдоподобия дисперсии для нормально распределенных переменных. Стандартное отклонение, вычисленное в этой функции, представляет собой квадратный корень из оценочной дисперсии, поэтому даже с ddof=1 это не будет несмещенной оценкой стандартного отклонения как такового.
Обратите внимание, что для комплексных чисел std принимает абсолютное значение перед возведением в квадрат, так что результат всегда является действительным и неотрицательным.
Для ввода с плавающей запятой std вычисляется с той же точностью, что и ввод. В зависимости от входных данных это может привести к неточным результатам, особенно для числа с плавающей запятой32 (см. пример below).. Указание аккумулятора более высокой точности с помощью ключевого слова dtype может решить эту проблему.
Examples
>>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) 1.1180339887498949 # may vary >>> np.std(a, axis=0) array([1., 1.]) >>> np.std(a, axis=1) array([0.5, 0.5])
В одинарной точности std() может быть неточным:
>>> a = np.zeros((2, 512*512), dtype=np.float32) >>> a[0, :] = 1.0 >>> a[1, :] = 0.1 >>> np.std(a) 0.45000005
Вычисление стандартного отклонения в float64 более точное:
>>> np.std(a, dtype=np.float64) 0.44999999925494177 # may vary
Указание аргумента where:
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]]) >>> np.std(a) 2.614064523559687 # may vary >>> np.std(a, where=[[True], [True], [False]]) 2.0
Как рассчитать стандартное отклонение в Pandas (с примерами)
Вы можете использовать функцию DataFrame.std() для вычисления стандартного отклонения значений в кадре данных pandas.
На практике можно использовать следующие методы для расчета стандартного отклонения:
Метод 1: рассчитать стандартное отклонение одного столбца
df['column_name'].std( )
Метод 2: вычислить стандартное отклонение нескольких столбцов
df[[ ' column_name1', 'column_name2']].std( )
Метод 3: вычислить стандартное отклонение всех числовых столбцов
df.std( )
Обратите внимание, что функция std() автоматически игнорирует любые значения NaN в DataFrame при вычислении стандартного отклонения.
В следующих примерах показано, как использовать каждый метод со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) team points assists rebounds 0 A 25 5 11 1 A 12 7 8 2 B 15 7 10 3 B 14 9 6 4 B 19 12 6 5 B 23 9 5 6 C 25 9 9 7 C 29 4 12
Метод 1: рассчитать стандартное отклонение одного столбца
В следующем коде показано, как рассчитать стандартное отклонение одного столбца в DataFrame:
#calculate standard deviation of 'points' column df['points'].std( ) 6.158617655657106
Стандартное отклонение оказывается равным 6,1586 .
Метод 2: вычислить стандартное отклонение нескольких столбцов
В следующем коде показано, как рассчитать стандартное отклонение нескольких столбцов в DataFrame:
#calculate standard deviation of 'points' and 'rebounds' columns df[['points', 'rebounds']]. std() points 6.158618 rebounds 2.559994 dtype: float64
Стандартное отклонение столбца «Очки» составляет 6,1586 , а стандартное отклонение столбца «Подборы» — 2,5599 .
Метод 3: вычислить стандартное отклонение всех числовых столбцов
В следующем коде показано, как рассчитать стандартное отклонение каждого числового столбца в DataFrame:
#calculate standard deviation of all numeric columns df.std() points 6.158618 assists 2.549510 rebounds 2.559994 dtype: float64
Обратите внимание, что Pandas не рассчитывали стандартное отклонение столбца «команда», поскольку это не числовой столбец.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Функция stdev() в Python
Сегодня мы представим стандартное отклонение с помощью метода stdev() в Python. Стандартное отклонение – это статистическая единица, которая представляет собой вариацию данных, то есть отображает отклонение значений данных от центрального значения (среднего значения данных).
Обычно стандартное отклонение рассчитывается по следующей формуле:
Стандартное отклонение = (Дисперсия) ^ 1/2
Теперь давайте начнем с реализации и расчета стандартного отклонения с использованием встроенной функции в Python.
Начало работы с функцией
Модуль содержит различные встроенные функции для выполнения анализа данных и других статистических функций. Функция statistics.stdev() используется для вычисления стандартного отклонения значений данных, переданных функции в качестве аргумента.
statistics.stdev(data)
import statistics data = range(1,10) res_std = statistics.stdev(data) print(res_std)
В приведенном выше примере мы создали данные чисел от 1 до 10 с помощью функции range(). Далее мы применяем функцию stdev() для оценки стандартного отклонения значений данных.
2.7386127875258306
Стандартное отклонение с модулем NumPy
Модуль NumPy преобразует элементы данных в форму массива для выполнения числовых манипуляций с ними.
Кроме того, функцию numpy.std() можно использовать для вычисления стандартного отклонения всех значений данных, присутствующих в массиве NumPy.
numpy.std(data)
Нам нужно импортировать модуль NumPy в среду Python, чтобы получить доступ к его встроенным функциям, используя приведенный ниже код:
import numpy
import numpy as np import pandas as pd data = np.arange(1,30) res_std = np.std(data) print(res_std)
В приведенном выше примере мы сгенерировали массив элементов от 1 до 30 с помощью функции numpy.arange(). После этого мы передаем массив в функцию numpy.std() для вычисления стандартного отклонения элементов массива.
8.366600265340756
Стандартное отклонение с модулем Pandas
Модуль Pandas преобразует значения данных в DataFrame и помогает нам анализировать огромные наборы данных и работать с ними. Функция pandas.DataFrame.std() используется для вычисления стандартного отклонения значений столбца данных определенного DataFrame.
pandas.DataFrame.std()
import numpy as np import pandas as pd data = np.arange(1,10) df = pd.DataFrame(data) res_std = df.std() print(res_std)
В приведенном выше примере мы преобразовали массив NumPy в DataFrame и применили функцию DataFrame.std(), чтобы получить стандартное отклонение значений данных.
0 2.738613 dtype: float64
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt data = pd.read_csv("C:/mtcars.csv") res_std = data['qsec'].std() print(res_std)
В приведенном выше примере мы использовали набор данных и рассчитали стандартное отклонение столбца данных qsec с помощью функции DataFrame.std().
Входной набор данных:

1.7869432360968431
Заключение
Таким образом, в этой статье мы поняли, как работает функция Python stdev() вместе с модулем NumPy и Pandas.
Стандартное отклонение для выборки или популяции
Населениенабор данных содержит все члены указанной группы (полный список возможных значений данных). Например, население может быть «ВСЕМИ людьми, живущими в Канаде».образецнабор данных содержит часть или подмножество совокупности. Размер выборки всегда меньше, чем размер популяции, из которой она взята. Например, выборка может быть «НЕКОТОРЫЕ люди, живущие в Канаде».
Мы обычно заинтересованы в знанииНаселениестандартное отклонениепоскольку он содержит все значения, которые мы хотим проанализировать. Обычно мы рассчитываем стандартное отклонение для популяции, если у нас есть целая популяция или у нас выборка большей популяции, но мы не хотим обобщать наши выводы для популяции. Во многих случаях у нас есть выборка данных, из которой мы хотели бы обобщить анализ для совокупности. В общем, если у вас есть только выборка данных и вы хотите сделать заявление о стандартном отклонении совокупности, из которого берется выборка, вам необходимо использовать стандартное отклонение выборки. В этой статье я остановлюсь на стандартном отклонении населения.стандартное отклонение населенияформула следующая:

Например, если наш набор данных [13, 22, 26, 38, 36, 42,49, 50, 77, 81, 98, 110] , среднее или среднее значение по населению будет: Суммирование всех отдельных элементов в наборе данных, деленное на количество элементов, и результат будет 53.5 ,
Теперь вычтите среднее значение из каждого элемента в наборе и возведите в квадрат разницу между каждым числом и средним. Например, для первого элемента 13 , у нас есть:
(13–53.5)=(-40.5) and square of (-40.5) will be: 1,640.25
Затем суммируйте все квадратные различия ( 10,581 ) и разделите эту сумму на количество предметов. Результат будет 881.75 , Этот номер называетсядисперсия, Возьмите квадратный корень из дисперсии, чтобы найти стандартное отклонение. Таким образом, стандартное отклонение этого набора данных будет 29.69 ,
Стандартное отклонение в Python
Среднее население и стандартное отклонение набора данных могут быть рассчитаны с использованием Numpy библиотека на питоне. Следующий код показывает работу:
import numpy as np
dataset=[13, 22, 26, 38, 36, 42,49, 50, 77, 81, 98, 110]print('Mean:', np.mean(dataset))
print('Standard Deviation:', np.std(dataset))Mean:53.5
Standard Deviation: 29.694275542602483
Сравнение двух наборов данных с использованием стандартного отклонения в Python
Два набора данных ниже показывают высокие температуры (в градусах Фаренгейта) для двух городов в течение 15-дневного периода. Мы хотим сравнить среднее и стандартное отклонение для температур этих двух городов.
City A= 36, 37, 36, 34, 39, 33, 30, 30, 32, 31, 31, 32, 32, 33, 35City B= 41, 35, 28, 29, 25, 36, 36, 32, 38, 40, 40, 34, 31, 28, 30
Средняя температура двух городов 33.4 для города А и 33.5 для города Б, которые очень близки друг к другу. В обоих городах как-то холодно. Тем не менее, стандартное отклонение города А 2.60 гораздо меньше, чем город B с 4.83 , Это указывает на то, что температура в городе А более стабильна, чем в городе Б. Другими словами, температура в городе В меняется больше изо дня в день.
Чтобы показать эту вариацию на графике, я использую панель ошибок в Python. Столбики ошибок полезны для решателей проблем, поскольку они показывают достоверность или точность в наборе рассчитанных значений. Среднее значение и стандартное отклонение можно изобразить с помощью matlibplot библиотека на питоне. Как показано на следующем рисунке, город А имеет меньшие вариации по сравнению с городом Б.

Python-код для создания панели ошибок
Теперь я объясню, как я создал панель ошибок
Прежде всего, после импорта библиотек я вычисляю среднее значение и стандартное отклонение для обоих наборов данных:
City_A=[36,37,36,34,39,33,30,30,32,31,31,32,32,33,35]
City_B=[41,35,28,29,25,36,36,32,38,40,40,34,31,28,30] Mean_City_A=np.mean(City_A)
Mean_City_B=np.mean(City_B) STDV_City_A=np.std(City_A)
STDV_City_B=np.std(City_B)
Затем я создаю объект фигуры и устанавливаю метки оси:
# Create a figure with customized size
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111) # Set the axis lables
ax.set_xlabel('Day', fontsize = 18)
ax.set_ylabel('Temperature', fontsize = 18)
Нам нужно назначить дни (15-дневный период) по оси X:
# X axis is day numbers from 1 to 15
xaxis = np.array(range(1,16))
Поскольку мы создаем панель ошибок над линиями, мы также можем установить цвет и настройку линий этого графика:
# Line color for error bar
color_City_A = ‘red’
color_City_B = ‘darkgreen’ # Line style for each dataset
lineStyle_City_A=lineStyle_City_B=
Теперь мы создадим две панели ошибок с элементами каждого набора данных, стандартным отклонением и установленными стилями линий.
# Create an error bar for each datasetline_City_A=ax.errorbar(xaxis, City_A, yerr=STDV_City_A, **lineStyle_City_A, color=color_City_A, label='City A')line_City_B=ax.errorbar(xaxis, City_B, yerr=STDV_City_B, **lineStyle_City_B, color=color_City_B, label='City B')
Я хотел бы показать цифры в каждой строке, поэтому я использую annotate функция для добавления текста к точкам. xy в функции показывает положение чисел на графике, и xytext показывает положение меток.
# Label each dataset on the graph, xytext is the label's position for i, txt in enumerate(City_A):
ax.annotate(txt, xy=(xaxis[i], City_A[i]),
xytext=(xaxis[i]+0.03,City_A[i]+0.3),
color=color_City_A) for i, txt in enumerate(City_B):
ax.annotate(txt, xy=(xaxis[i], City_B[i]),
xytext=(xaxis[i]+0.03,
City_B[i]+0.3),color=color_City_B)
Кроме того, я нарисую легенду для графика, а также другие настройки стиля легенды, стиля шрифта оси и добавления серой сетки к графику:
# Customize the legend font and handle
lengthparams =
plt.rcParams.update(params) # Customize the font
font =
matplotlib.rc('font', **font) # Draw a grid for the graph and set face color to the graph
ax.grid(color='lightgrey', linestyle='-')
ax.set_facecolor('w')
Наконец, строка ошибки отображается с помощью plt.show() команда.
Ниже найдите код Python:
Спасибо за чтение этой статьи!