The **weighted standard deviation** is a useful way to measure the dispersion of values in a dataset when some values in the dataset have higher weights than others.

The formula to calculate a weighted standard deviation is:

where:

**N:**The total number of observations**M:**The number of non-zero weights**w**A vector of weights_{i}:**x**A vector of data values_{i}:**x:**The weighted mean

The easiest way to calculate a weighted standard deviation in Python is to use the DescrStatsW() function from the statsmodels package:

DescrStatsW(values, weights=weights, ddof=1).std

The following example shows how to use this function in practice.

**Example: Weighted Standard Deviation in Python**

Suppose we have the following array of data values and corresponding weights:

#define data values values = [14, 19, 22, 25, 29, 31, 31, 38, 40, 41] #define weights weights = [1, 1, 1.5, 2, 2, 1.5, 1, 2, 3, 2]

The following code shows how to calculate the weighted standard deviation for this array of data values:

**from statsmodels.stats.weightstats import DescrStatsW
#calculate weighted standard deviation
DescrStatsW(values, weights=weights, ddof=1).std
8.570050878426773
**

The weighted standard deviation turns out to be **8.57**.

Note that we can also use **var** to quickly calculate the weighted variance as well:

**from statsmodels.stats.weightstats import DescrStatsW
#calculate weighted variance
DescrStatsW(values, weights=weights, ddof=1).var
73.44577205882352**

The weighted variance turns out to be **73.446**.

**Additional Resources**

The following tutorials explain how to calculate weighted standard deviation in other statistical software:

How to Calculate Weighted Standard Deviation in Excel

How to Calculate Weighted Standard Deviation in R