Skip to main content
`Ctrl`+`K`

# pandas.core.groupby.DataFrameGroupBy.std

DataFrameGroupBy.std(ddof=1, engine=None, engine_kwargs=None, numeric_only=False)

  Compute standard deviation of groups, excluding missing values.

  For multiple groupings, the result index will be a MultiIndex.

  Parameters:
    ddof int, default 1

      Degrees of freedom.

    engine str, default None

      - `'cython'` : Runs the operation through C-extensions from cython.

      - `'numba'` : Runs the operation through JIT compiled code from numba.

      - `None` : Defaults to `'cython'` or globally setting `compute.use_numba`

      Added in version 1.4.0.

    engine_kwargs dict, default None

      - For `'cython'` engine, there are no accepted `engine_kwargs`

      - For `'numba'` engine, the engine can accept `nopython`, `nogil` and `parallel` dictionary keys. The values must either be `True` or `False`. The default `engine_kwargs` for the `'numba'` engine is `{{'nopython': True, 'nogil': False, 'parallel': False}}`

      Added in version 1.4.0.

    numeric_only bool, default False

      Include only float, int or boolean data.

      Added in version 1.5.0.

      Changed in version 2.0.0: numeric_only now defaults to `False`.

  Returns:
    Series or DataFrame

      Standard deviation of values within each group.

  See also

  `Series.groupby`

    Apply a function groupby to a Series.

  `DataFrame.groupby`

    Apply a function groupby to each row or column of a DataFrame.

  Examples

  For SeriesGroupBy:

      >>> lst = ['a', 'a', 'a', 'b', 'b', 'b']
      >>> ser = pd.Series([7, 2, 8, 4, 3, 3], index=lst)
      >>> ser
      a     7
      a     2
      a     8
      b     4
      b     3
      b     3
      dtype: int64
      >>> ser.groupby(level=0).std()
      a    3.21455
      b    0.57735
      dtype: float64

  For DataFrameGroupBy:

      >>> data = {'a': [1, 3, 5, 7, 7, 8, 3], 'b': [1, 4, 8, 4, 4, 2, 1]}
      >>> df = pd.DataFrame(data, index=['dog', 'dog', 'dog',
      ...                   'mouse', 'mouse', 'mouse', 'mouse'])
      >>> df
               a  b
        dog    1  1
        dog    3  4
        dog    5  8
      mouse    7  4
      mouse    7  4
      mouse    8  2
      mouse    3  1
      >>> df.groupby(level=0).std()
                    a         b
      dog    2.000000  3.511885
      mouse  2.217356  1.500000