You could convert the dataframe to be a single column with stack (this changes the shape from 5x3 to 15x1) and then take the standard deviation:

df.stack().std()         # pandas default degrees of freedom is one

Alternatively, you can use values to convert from a pandas dataframe to a numpy array before taking the standard deviation:

df.values.std(ddof=1)    # numpy default degrees of freedom is zero

Unlike pandas, numpy will give the standard deviation of the entire array by default, so there is no need to reshape before taking the standard deviation.

A couple of additional notes:

  • The numpy approach here is a bit faster than the pandas one, which is generally true when you have the option to accomplish the same thing with either numpy or pandas. The speed difference will depend on the size of your data, but numpy was roughly 10x faster when I tested a few different sized dataframes on my laptop (numpy version 1.15.4 and pandas version 0.23.4).

  • The numpy and pandas approaches here will not give exactly the same answers, but will be extremely close (identical at several digits of precision). The discrepancy is due to slight differences in implementation behind the scenes that affect how the floating point values get rounded.

Answer from JohnE on Stack Overflow
🌐
W3Schools
w3schools.com › python › pandas › ref_df_std.asp
Pandas DataFrame std() Method
The std() method calculates the standard deviation for each column.
Top answer
1 of 4
99

You could convert the dataframe to be a single column with stack (this changes the shape from 5x3 to 15x1) and then take the standard deviation:

df.stack().std()         # pandas default degrees of freedom is one

Alternatively, you can use values to convert from a pandas dataframe to a numpy array before taking the standard deviation:

df.values.std(ddof=1)    # numpy default degrees of freedom is zero

Unlike pandas, numpy will give the standard deviation of the entire array by default, so there is no need to reshape before taking the standard deviation.

A couple of additional notes:

  • The numpy approach here is a bit faster than the pandas one, which is generally true when you have the option to accomplish the same thing with either numpy or pandas. The speed difference will depend on the size of your data, but numpy was roughly 10x faster when I tested a few different sized dataframes on my laptop (numpy version 1.15.4 and pandas version 0.23.4).

  • The numpy and pandas approaches here will not give exactly the same answers, but will be extremely close (identical at several digits of precision). The discrepancy is due to slight differences in implementation behind the scenes that affect how the floating point values get rounded.

2 of 4
4

Use axis=None

Since pandas 2.0.0, you can use df.mean(axis=None) to compute mean over the entire dataframe. Since pandas 3.0.0, you can use df.std(axis=None) to compute standard deviation over the entire dataframe.

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df.mean(axis=None)    # 3.5
df.std(axis=None)     # 1.8708286933869707

Note that DataFrame.std sets ddof=1 by default while Numpy's std sets ddof=0 by default. You can check the relationships as follows:

df.std(axis=None, ddof=0) == df.values.std()  # True

df.std(axis=None) == df.values.std(ddof=1)    # True

Good thing about pandas mean and std is that it ignores NaN values for you if the dataframe has any whereas with numpy, you have to explicitly filter NaNs out.

# a dataframe with a NaN value
df = pd.DataFrame({'A': [1, float("nan"), 3], 'B': [4, 5, 6]})

df.values.mean()    # nan                 <--- numpy mean/std becomes meaningless
df.values.std()     # nan

df.mean(axis=None)  # 3.8                 <--- pandas mean/std ignores NaNs
df.std(axis=None)   # 1.9235384061671346
🌐
Pandas
pandas.pydata.org › pandas-docs › version › 1.5 › reference › api › pandas.DataFrame.std.html
pandas.DataFrame.std — pandas 1.5.3 documentation
DataFrame.std(axis=None, skipna=True, level=None, ddof=1, numeric_only=None, **kwargs)[source]# Return sample standard deviation over requested axis. Normalized by N-1 by default. This can be changed using the ddof argument. Parameters · axis{index (0), columns (1)} For Series this parameter is unused and defaults to 0.
🌐
Vultr Docs
docs.vultr.com › python › third-party › pandas › DataFrame › std
Python Pandas DataFrame std() - Calculate Standard Deviation | Vultr Docs
December 24, 2024 - Add missing values to the DataFrame and compute standard deviation. ... With the std() function, any NaN or NA values are automatically ignored, ensuring accurate statistical calculations.
Find elsewhere
🌐
Pandas
pandas.pydata.org › pandas-docs › version › 0.17 › generated › pandas.DataFrame.std.html
pandas.DataFrame.std — pandas 0.17.1 documentation
DataFrame.std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)¶ · Return unbiased standard deviation over requested axis. Normalized by N-1 by default. This can be changed using the ddof argument · index · modules | next | previous | pandas 0.17.1 documentation » ·
🌐
GeeksforGeeks
geeksforgeeks.org › python › python-pandas-dataframe-std
Python | Pandas dataframe.std() - GeeksforGeeks
October 22, 2019 - Python is a great language for ... and analyzing data much easier. Pandas dataframe.std() function return sample standard deviation over requested axis....
🌐
Statology
statology.org › home › how to calculate standard deviation in pandas (with examples)
How to Calculate Standard Deviation in Pandas (With Examples)
September 27, 2021 - You can use the DataFrame.std() function to calculate the standard deviation of values in a pandas DataFrame.
🌐
Spark By {Examples}
sparkbyexamples.com › home › pandas › pandas dataframe std() method
Pandas DataFrame std() Method - Spark By {Examples}
December 6, 2024 - In Pandas, the std() method is used to calculate the standard deviation of the values in a DataFrame or a Series. The standard deviation measures the
🌐
Pandas
pandas.pydata.org › pandas-docs › version › 2.1 › reference › api › pandas.DataFrame.std.html
pandas.DataFrame.std — pandas 2.1.4 documentation
DataFrame.std(axis=0, skipna=True, ddof=1, numeric_only=False, **kwargs)[source]# Return sample standard deviation over requested axis. Normalized by N-1 by default. This can be changed using the ddof argument. Parameters: axis{index (0), columns (1)} For Series this parameter is unused and ...
🌐
Apache
spark.apache.org › docs › latest › api › python › reference › pyspark.pandas › api › pyspark.pandas.DataFrame.std.html
pyspark.pandas.DataFrame.std — PySpark 4.1.2 documentation
std: scalar for a Series, and a Series for a DataFrame. Examples · >>> df = ps.DataFrame({'a': [1, 2, 3, np.nan], 'b': [0.1, 0.2, 0.3, np.nan]}, ... columns=['a', 'b']) On a DataFrame: >>> df.std() a 1.0 b 0.1 dtype: float64 · >>> df.std(ddof=2) a 1.414214 b 0.141421 dtype: float64 ·
🌐
EDUCBA
educba.com › home › software development › software development tutorials › pandas tutorial › pandas std()
Pandas std() | How does std() Function Work in Pandas?
April 14, 2023 - Then we use the std() function to call this data. The std() function gives the final standard deviation of all the marks of each row and each column and finally produces the output.
Address: Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
CodeFatherTech
codefather.tech › home › blog › pandas standard deviation: analyse your data with python
Pandas Standard Deviation: Analyse Your Data With Python
June 22, 2025 - The Pandas DataFrame std() function allows to calculate the standard deviation of a data set. The standard deviation is usually calculated for a given column and it’s normalised by N-1 by default.