I cannot speak for the scipy stats.describe people, but the general answer is this: mean, variance, and even kurtosis can be computed in one or two O(n) passes through the data, while median requires an O(n*log(n)) sort.

Answer from Terry Jan Reedy on Stack Overflow
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.ndimage.median.html
median — SciPy v1.17.0 Manual
Array_like of values. For each region specified by labels, the median value of input over the region is computed.
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.median_test.html
median_test — SciPy v1.17.0 Manual
The default is Pearson’s chi-squared statistic. ... The p-value of the test. ... The grand median. ... The contingency table. The shape of the table is (2, n), where n is the number of samples. The first row holds the counts of the values above the grand median, and the second row holds the counts of the values below the grand median. The table allows further analysis with, for example, scipy.stats.chi2_contingency, or with scipy.stats.fisher_exact if there are two samples, without having to recompute the table.
🌐
SciPy
docs.scipy.org › doc › scipy-0.8.x › reference › generated › scipy.stats.median.html
scipy.stats.median — SciPy v0.8 Reference Guide (DRAFT)
September 2, 2010 - scipy.stats.median(a, axis=0)¶ · Returns the median of the passed array along the given axis. If there is an even number of entries, the mean of the 2 middle values is returned. scipy.stats.cmedian · scipy.stats.mode · Show Source · Edit page · Enter search terms or a module, class or ...
🌐
SciPy
docs.scipy.org › doc › scipy-0.7.x › reference › generated › scipy.stats.median.html
scipy.stats.median — SciPy v0.7 Reference Guide (DRAFT)
scipy.stats.median(a, axis=0)¶ · Returns the median of the passed array along the given axis. If there is an even number of entries, the mean of the 2 middle values is returned. scipy.stats.cmedian · scipy.stats.mode · Show Source · Edit page · index ·
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.median_abs_deviation.html
median_abs_deviation — SciPy v1.17.0 Manual
The median absolute deviation (MAD, [1]) computes the median over the absolute deviations from the median. It is a measure of dispersion similar to the standard deviation but more robust to outliers [2]. The MAD of an empty array is np.nan. Added in version 1.5.0. ... Input array or object that can be converted to an array. ... If an int, the axis of the input along which to compute the statistic.
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.rv_continuous.median.html
median — SciPy v1.16.2 Manual
scipy.stats.rv_continuous. rv_continuous.median(*args, **kwds)[source]# Median of the distribution. Parameters: arg1, arg2, arg3,…array_like · The shape parameter(s) for the distribution (see docstring of the instance object for more information) locarray_like, optional ·
🌐
Python
docs.python.org › 3 › library › statistics.html
statistics — Mathematical statistics functions
Return the median (middle value) of numeric data, using the common “mean of middle two” method. If data is empty, StatisticsError is raised.
🌐
SciPy
docs.scipy.org › doc › scipy › reference › stats.html
Statistical functions (scipy.stats) — SciPy v1.17.0 Manual
They can also be interpreted or ... mean or median of differences between paired observations). These tests are often used to assess whether there is a relationship (e.g. linear) between paired observations in multiple samples or among the coordinates of multivariate observations.
Find elsewhere
🌐
SciPy
docs.scipy.org › doc › scipy-1.7.1 › reference › reference › generated › scipy.stats.median_absolute_deviation.html
scipy.stats.median_absolute_deviation — SciPy v1.7.1 Manual
When comparing the behavior of median_absolute_deviation with np.std, the latter is affected when we change a single value of an array to have an outlier value while the MAD hardly changes: >>> from scipy import stats >>> x = stats.norm.rvs(size=100, scale=1, random_state=123456) >>> x.std() 0.9973906394005013 >>> stats.median_absolute_deviation(x) 1.2280762773108278 >>> x[0] = 345.6 >>> x.std() 34.42304872314415 >>> stats.median_absolute_deviation(x) 1.2340335571164334
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.mstats.median_cihs.html
median_cihs — SciPy v1.16.2 Manual
scipy.stats.mstats.median_cihs(data, alpha=0.05, axis=None)[source]# Computes the alpha-level confidence interval for the median of the data. Uses the Hettmasperger-Sheather method. Parameters: dataarray_like · Input data. Masked values are discarded. The input should be 1D only, or axis should ...
🌐
SciPy
docs.scipy.org › doc › scipy-0.14.0 › reference › generated › scipy.stats.nanmedian.html
scipy.stats.nanmedian — SciPy v0.14.0 Reference Guide
Compute the median along the given axis ignoring nan values. ... >>> from scipy import stats >>> a = np.array([0, 3, 1, 5, 5, np.nan]) >>> stats.nanmedian(a) array(3.0)
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.Uniform.median.html
median — SciPy v1.15.2 Manual
If a continuous random variable \(X\) has probability \(0.5\) of taking on a value less than \(m\), then \(m\) is the median.
🌐
SciPy
docs.scipy.org › doc › › scipy-1.7.0 › reference › generated › scipy.stats.median_absolute_deviation.html
scipy.stats.median_absolute_deviation — SciPy v1.7.0 Manual
When comparing the behavior of median_absolute_deviation with np.std, the latter is affected when we change a single value of an array to have an outlier value while the MAD hardly changes: >>> from scipy import stats >>> x = stats.norm.rvs(size=100, scale=1, random_state=123456) >>> x.std() 0.9973906394005013 >>> stats.median_absolute_deviation(x) 1.2280762773108278 >>> x[0] = 345.6 >>> x.std() 34.42304872314415 >>> stats.median_absolute_deviation(x) 1.2340335571164334
🌐
SciPy
docs.scipy.org › doc › scipy-1.16.1 › reference › generated › scipy.stats.Normal.median.html
median — SciPy v1.16.1 Manual
If a continuous random variable \(X\) has probability \(0.5\) of taking on a value less than \(m\), then \(m\) is the median.
🌐
SciPy
scipy.github.io › devdocs › reference › generated › scipy.stats.rv_discrete.median.html
median — SciPy v1.18.0.dev Manual
scipy.stats.rv_discrete. rv_discrete.median(*args, **kwds)[source]# Median of the distribution. Parameters: arg1, arg2, arg3,…array_like · The shape parameter(s) for the distribution (see docstring of the instance object for more information) locarray_like, optional ·
🌐
W3Schools
w3schools.com › python › python_ml_mean_median_mode.asp
Python Machine Learning - Mean Median Mode
April 9, 2026 - import numpy speed = [99,86,87,88,86,103,87,94,78,77,85,86] x = numpy.median(speed) print(x) Try it Yourself » · The Mode value is the value that appears the most number of times: 99,86, 87, 88, 111,86, 103, 87, 94, 78, 77, 85,86 = 86 · The SciPy module has a method for this. Learn about the SciPy module in our SciPy Tutorial. Use the SciPy mode() method to find the number that appears the most: from scipy import stats speed = [99,86,87,88,111,86,103,87,94,78,77,85,86] x = stats.mode(speed) print(x) Try it Yourself » ·
🌐
SciPy
docs.scipy.org › doc › scipy › reference › generated › scipy.stats.rv_discrete.median.html
scipy.stats.rv_discrete.median — SciPy v1.10.1 Manual
scipy.stats.rv_discrete. rv_discrete.median(*args, **kwds)[source]# Median of the distribution. Parameters: arg1, arg2, arg3,…array_like · The shape parameter(s) for the distribution (see docstring of the instance object for more information) locarray_like, optional ·
🌐
W3Schools
w3schools.com › python › ref_stat_median.asp
Python statistics.median() Method
The statistics.median() method calculates the median (middle value) of the given data set.
🌐
GeeksforGeeks
geeksforgeeks.org › python › scipy-stats-nanmedian-function-python
sciPy stats.nanmedian() function | Python - GeeksforGeeks
February 11, 2019 - scipy.stats.nanmedian(array, axis=0) function calculates the median by ignoring the Nan (not a number) values of the array elements along the specified axis of the array.