我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文依然讨论dataframedescribe方法的结果,当被统计的数据为数字类型的时候,统计描述的结果中其中有个25%/50%/75%的分位数概念,这个分位数它实际上是可以定制的。

苏南大叔:python教程,如何设置dataframe的describe结果的分位数? - 设置分位数
python教程,如何设置dataframe的describe结果的分位数?(图2-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔的编程经验文章。本文测试环境:win10python@3.11.0

正常分位数

可以参考下面的文章,正常来说,对dataframe进行.describe()会返回以下分位数:25%/50%/75%

import pandas as pd
data_url = "http://download.tensorflow.org/data/iris_training.csv"
column_names = ["萼长", "萼宽", "瓣长", "瓣宽", "种类"]
df = pd.read_csv(data_url, header=0, names=column_names)
print(df.describe())

输出:

          萼长      萼宽          瓣长          瓣宽          种类
count  120.000000  120.000000  120.000000  120.000000  120.000000
mean     5.845000    3.065000    3.739167    1.196667    1.000000
std      0.868578    0.427156    1.822100    0.782039    0.840168
min      4.400000    2.000000    1.000000    0.100000    0.000000
25%      5.075000    2.800000    1.500000    0.300000    0.000000
50%      5.800000    3.000000    4.400000    1.300000    1.000000
75%      6.425000    3.300000    5.100000    1.800000    2.000000
max      7.900000    4.400000    6.900000    2.500000    2.000000

定制分位数

这些分位数的计算方式是:以min0%max100%,进而按比例计算得到对应的分位数。那么,这些百分比其实是可以定制的。定制的方式就是:在.describe()方法中传递个参数percentiles,其类型是个list,也就是说传递的数据是个[]

df.describe(percentiles=[])

测试代码:

import pandas as pd
data_url = "http://download.tensorflow.org/data/iris_training.csv"
column_names = ["萼长", "萼宽", "瓣长", "瓣宽", "种类"]
df = pd.read_csv(data_url, header=0, names=column_names)
print(df.describe(percentiles=[0.3,0.8]))
print(df.describe(percentiles=[0.3,0.5,0.8]))

苏南大叔:python教程,如何设置dataframe的describe结果的分位数? - 定制范围
python教程,如何设置dataframe的describe结果的分位数?(图2-2)

值得特殊说明的是:

  • 其中的50%【特殊的分位数叫做中位数】是必然被输出。
  • 0%100%可以被输出,虽然和minmax意义重复。
  • 超出上述范围的数据,比如120%,是会引发报错输出的。

结束语

中位数50%是个特殊的分位数,它和minmax一样是被固定下来不变的。更多文章,请参考苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python