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

本文继续探讨dataframe类型的.describe()方法,经过前面的多篇文章描述,已经得出的结论是:dataframe类型数据的.describe()方法,主要针对数字类型的数据进行统计描述,而统计的结果精度值非常高,小数点高达六位数。然而,日常工作中,苏南大叔确不需要这么高的精度,由此引出本文的内容。

苏南大叔:如何定制dataframe的describe方法返回值的小数点位数? - describe的小数点位数
如何定制dataframe的describe方法返回值的小数点位数?(图4-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程故事。本文测试环境:win10python@3.11.0。本文描述更改dataframe.describe()方法返回结果的精度问题。

标本数据

这里的标本数据依然是鸢尾花数据集,读取方法参考文章:

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() )

全局修改pandas设置display.float_format

核心代码:

import pandas as pd
# ...
pd.set_option('display.float_format',lambda X:'%.2f'% X)

修改的是display.float_format选项。也可以表述为:

pd.options.display.float_format = "{:.2f}".format

测试代码:

pd.set_option('display.float_format',lambda X:'%.3f'% X)
print(df.describe())

输出:

           萼长   萼宽    瓣长    瓣宽     种类
count 120.000 120.000 120.000 120.000 120.000
mean    5.845   3.065   3.739   1.197   1.000
std     0.869   0.427   1.822   0.782   0.840
min     4.400   2.000   1.000   0.100   0.000
25%     5.075   2.800   1.500   0.300   0.000
50%     5.800   3.000   4.400   1.300   1.000
75%     6.425   3.300   5.100   1.800   2.000
max     7.900   4.400   6.900   2.500   2.000

苏南大叔:如何定制dataframe的describe方法返回值的小数点位数? - 总体设置三位小数点
如何定制dataframe的describe方法返回值的小数点位数?(图4-2)

使用.round(小数点位数)【推荐】

核心代码:

df.describe().round(2)

测试代码:

print( df.describe().round(2) )
print( df.describe().round(3) )
print( df.describe().round(4) )

输出:

         萼长     萼宽    瓣长    瓣宽     种类
std      0.87    0.43    1.82    0.78    0.84
min      4.40    2.00    1.00    0.10    0.00

          萼长     萼宽      瓣长     瓣宽     种类
std      0.869    0.427    1.822    0.782    0.84
min      4.400    2.000    1.000    0.100    0.00

           萼长      萼宽       瓣长      瓣宽      种类
std      0.8686    0.4272    1.8221    0.7820    0.8402
min      4.4000    2.0000    1.0000    0.1000    0.0000

苏南大叔:如何定制dataframe的describe方法返回值的小数点位数? - 使用round方法设置小数点
如何定制dataframe的describe方法返回值的小数点位数?(图4-3)

这里发生了一个比较有趣的事情,最后一个“种类”的数据并没有严格遵守代码中的小数点设置。仔细观察的话,就是第二行里面的种类的std值,当设置为三位的时候,这个值恰好最后一位是0。于是效果变成了两位小数。

使用.apply(lambda )

这个方案看起来是前两个方案的合体。

核心代码:

df.describe().apply(lambda x: round(x, 2))

或者:

df.describe().apply(lambda series: series.apply(lambda value: f"{value:.2f}"))

苏南大叔:如何定制dataframe的describe方法返回值的小数点位数? - apply方式
如何定制dataframe的describe方法返回值的小数点位数?(图4-4)

结束语

更多python相关文章,请点击下面的链接查看:

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

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

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

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