python数据清洗,如何求dataframe中位数/平均数/分位数?
发布于 作者:苏南大叔 来源:程序如此灵动~

必须明确一个概念:平均数不是中位数。平均数是所有数的平均,强调的是数量。而中位数是处于最中间的那个数,强调的是位置。所以,两者是有区别的。本文从实际的例子出发,看看两者的区别。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码之间的故事。测试环境:python@3.6.8
,pandas@1.1.5
,numpy@1.24.4
。
df.describe()参考
以前的文章里面,描述过一个df.describe()
函数,里面可以输出中位数。本文的可以对.describe()
的结果进行部分交叉相互验证。
这里给出一组数据,作为例子。
输出:
中位数算法
中位数是给出的一系列数里面真实存在的数字,只是它的位置是数字进行从小到大排序后最中间的位置。
输出:
也可以执行:

如果不存在最中间的那个数的话,就是最中间的两个数的平均值。
平均数
平均数是一系列数字的均值,很有可能出现小数点,很有可能并不是在这一系列数中真实存在的。
输出:
可见:平均数和中位数是完全不同的概念。
任意分位值
在计算中,还存在着任意分位值。其中,就包括50%分位数(中位数)。
输出:
最大值最小值
这个比较容易计算,比较好理解。
输出:
实际应用
可以利用本文提到的方法,求得对应列的平均值或者中位数,用于NA
数据的填充。参考文章:
总结
本文的计算方法,可以和df.describe()
的计算结果进行相互印证。更多python
相关经验文章,可以参考:


