能否为Python中pandas的describe函数添加range(即max-min)统计项?
在pandas的describe中添加Range统计项
当然可以实现!pandas默认的describe()函数本身没有直接包含range(max-min)的选项,但我们可以通过两种简单的方式把这个统计项加进去,下面给你详细演示:
方法1:在默认describe结果后追加Range行
先获取默认的统计结果,然后手动计算每个列的range,再把这一行添加到结果里:
import pandas as pd import numpy as np # 先造点示例数据方便测试 df = pd.DataFrame({ '数值列1': np.random.randint(10, 100, 60), '数值列2': np.random.uniform(0, 10, 60) }) # 获取默认的describe统计结果 default_desc = df.describe() # 计算range并添加为新行 default_desc.loc['range'] = default_desc.loc['max'] - default_desc.loc['min'] # 打印最终结果 print(default_desc)
运行这段代码后,你会看到输出结果里多了一行range,对应每个列的最大值减最小值。
方法2:自定义聚合统计,一次性生成包含Range的结果
如果不想先跑默认describe再追加,也可以直接用agg()方法自定义所有需要的统计项,包括默认的那些和range:
# 定义每个列需要的统计函数 custom_stats = { col: ['count', 'mean', 'std', 'min', '25%', '50%', '75%', 'max', lambda x: x.max() - x.min()] for col in df.columns } # 生成自定义统计结果 custom_desc = df.agg(custom_stats) # 把lambda对应的行名改成更友好的'range' custom_desc.rename(index={'<lambda>': 'range'}, inplace=True) print(custom_desc)
这种方式的好处是可以灵活调整需要的统计项,比如你还能加其他自定义统计值,输出结果直接包含所有你想要的内容。
两种方法都能完美实现你的需求,选哪种看你更习惯哪种操作方式啦~
内容的提问来源于stack exchange,提问作者saby
相关产品推荐
相关产品推荐

