Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中的中位数和总和_Python_Median - Fatal编程技术网

比较python中的中位数和总和

比较python中的中位数和总和,python,median,Python,Median,我有分类和审核计数的业务数据。我已将每个业务的类别组合在一起,我想将审查计数高于每个类别中审查计数中值的业务与低于审查计数中值的业务分开。本质上,我需要返回一系列按类别索引的中值,并使用这些中值来确定给定的业务是否大于其类别的中值。我必须将其审查计数与其类别的中位数进行比较。 我的代码抛出错误,我不知道为什么。建议?我试过以下两种方法 n = df.groupby('category')['review_count'].size() def cats_median_split(n): s

我有分类和审核计数的业务数据。我已将每个业务的类别组合在一起,我想将审查计数高于每个类别中审查计数中值的业务与低于审查计数中值的业务分开。本质上,我需要返回一系列按类别索引的中值,并使用这些中值来确定给定的业务是否大于其类别的中值。我必须将其审查计数与其类别的中位数进行比较。 我的代码抛出错误,我不知道为什么。建议?我试过以下两种方法

n = df.groupby('category')['review_count'].size()
def cats_median_split(n):
    s = df.groupby('category')['review_count'].median()
if n > s:
    return True
else:
    return False
df.groupby('category')['review_count'].apply(cats_median_split)
或:


如果我理解正确,您希望:



def median (seq, index=0):
    customcmp = lambda x, y: cmp(x[index], y[index])
    seq = sorted(seq, customcmp)
    l = len(seq)
    if l%2==0:
        return (seq[l/2-1][index]+seq[l/2][index])/2.0
    return seq[l/2][index]

def split (seq, index=0, trashhold=0):
    left = []; right = []
    for element in seq:
        if element[index]<trashhold:
            left.append(element)
        else:
            right.append(element)
    return left, right

cats = [(123, 345), (99, 258), (9753, 36754), (234, 216), (123456, 76543)]
m = median(cats, 1)
split(cats, 0, m)

For median you better use numpy, but for smaller sequences this implementation will do.


def中值(序号,指数=0):
customcmp=lambda x,y:cmp(x[索引],y[索引])
seq=已排序(seq,customcmp)
l=长度(序号)
如果l%2==0:
返回(seq[l/2-1][index]+seq[l/2][index])/2.0
返回序号[l/2][索引]
def分割(顺序,索引=0,垃圾舱=0):
左=[];右=[]
对于seq中的元素:

如果元素[index]发布错误。编辑您的问题以包含完整的回溯。您的数据样本对于提供数据也很重要。您可能会从中受益。发布实际错误,并可能更改问题标题以反映您遇到的实际错误,而不是您试图解决的一般问题您在代码中做了什么。什么是df?首先,你的缩进是不正确的,至少在这里是这样。


def median (seq, index=0):
    customcmp = lambda x, y: cmp(x[index], y[index])
    seq = sorted(seq, customcmp)
    l = len(seq)
    if l%2==0:
        return (seq[l/2-1][index]+seq[l/2][index])/2.0
    return seq[l/2][index]

def split (seq, index=0, trashhold=0):
    left = []; right = []
    for element in seq:
        if element[index]<trashhold:
            left.append(element)
        else:
            right.append(element)
    return left, right

cats = [(123, 345), (99, 258), (9753, 36754), (234, 216), (123456, 76543)]
m = median(cats, 1)
split(cats, 0, m)

For median you better use numpy, but for smaller sequences this implementation will do.