首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的Tukey five number摘要

Python中的Tukey five number摘要
EN

Stack Overflow用户
提问于 2010-10-07 10:23:43
回答 8查看 18.4K关注 0票数 12

我在任何标准包中都找不到这个函数,所以我写了下面的一个。然而,在把它扔到Cheeseshop之前,有没有人知道已经发布了一个版本?或者,请提出任何改进建议。谢谢。

代码语言:javascript
复制
def fivenum(v):
    """Returns Tukey's five number summary (minimum, lower-hinge, median, upper-hinge, maximum) for the input vector, a list or array of numbers based on 1.5 times the interquartile distance"""
    import numpy as np
    from scipy.stats import scoreatpercentile
    try:
        np.sum(v)
    except TypeError:
        print('Error: you must provide a list or array of only numbers')
    q1 = scoreatpercentile(v,25)
    q3 = scoreatpercentile(v,75)
    iqd = q3-q1
    md = np.median(v)
    whisker = 1.5*iqd
    return np.min(v), md-whisker, md, md+whisker, np.max(v),
EN

回答 8

Stack Overflow用户

发布于 2012-11-30 05:41:21

pandas SeriesDataFrame都有一个describe方法,它类似于Rsummary

代码语言:javascript
复制
In [3]: import numpy as np

In [4]: import pandas as pd

In [5]: s = pd.Series(np.random.rand(100))

In [6]: s.describe()
Out[6]: 
count    100.000000
mean       0.540376
std        0.296250
min        0.002514
25%        0.268722
50%        0.593436
75%        0.831067
max        0.991971

正确地处理了NAN

票数 32
EN

Stack Overflow用户

发布于 2010-10-07 10:30:48

我会去掉这两件事:

代码语言:javascript
复制
import numpy as np
from scipy.stats import scoreatpercentile

您应该在模块级别进行导入。这意味着用户在导入您的模块时,而不是调用函数时,就会意识到缺少的依赖项。

代码语言:javascript
复制
try:
    sum(v)
except TypeError:
    print('Error: you must provide a list or array of only numbers')

这其中有几个问题:

  1. 不要在Python中输入check。记录函数的用途。
  2. 你怎么知道调用者会看到这个?他们可能没有在控制台上运行,即使在控制台上运行,也可能不希望您的错误消息干扰他们的输出。
  3. 不要在Python.

中键入check

如果您确实希望为无效数据引发某种类型的异常(类型检查),要么让现有的异常传播,要么将其包装在您自己的异常类型中。

票数 9
EN

Stack Overflow用户

发布于 2011-06-15 18:40:22

如果有人需要在数据中使用NaN的版本,这里是我的修改。我不想更改原始的海报答案,以避免混淆。

代码语言:javascript
复制
import numpy as np
from scipy.stats import scoreatpercentile
from scipy.stats import nanmedian

def fivenum(v):
    """Returns Tukey's five number summary (minimum, lower-hinge, median, upper-hinge, maximum) for the input vector, a list or array of numbers based on 1.5 times the interquartile distance"""
    try:
        np.sum(v)
    except TypeError:
        print('Error: you must provide a list or array of only numbers')
    q1 = scoreatpercentile(v[~np.isnan(v)],25)
    q3 = scoreatpercentile(v[~np.isnan(v)],75)
    iqd = q3-q1
    md = nanmedian(v)
    whisker = 1.5*iqd
    return np.nanmin(v), md-whisker, md, md+whisker, np.nanmax(v),
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3878245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档