我在任何标准包中都找不到这个函数,所以我写了下面的一个。然而,在把它扔到Cheeseshop之前,有没有人知道已经发布了一个版本?或者,请提出任何改进建议。谢谢。
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),发布于 2012-11-30 05:41:21
pandas Series和DataFrame都有一个describe方法,它类似于R的summary
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。
发布于 2010-10-07 10:30:48
我会去掉这两件事:
import numpy as np
from scipy.stats import scoreatpercentile您应该在模块级别进行导入。这意味着用户在导入您的模块时,而不是调用函数时,就会意识到缺少的依赖项。
try:
sum(v)
except TypeError:
print('Error: you must provide a list or array of only numbers')这其中有几个问题:
中键入check
如果您确实希望为无效数据引发某种类型的异常(类型检查),要么让现有的异常传播,要么将其包装在您自己的异常类型中。
发布于 2011-06-15 18:40:22
如果有人需要在数据中使用NaN的版本,这里是我的修改。我不想更改原始的海报答案,以避免混淆。
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),https://stackoverflow.com/questions/3878245
复制相似问题