在 CSV 中的 13 行中查找中位数

Finding Median in 13 rows in CSV

好的,所以我在这里查看了几个不同的问题,但我还没有找到任何可以帮助解决这个问题的方法。我将 303 行分成 13 行,分为健康患者和患病患者。我能够得到两者的平均值,但现在我需要得到这 2 个平均值的中值(为了清楚起见,这就是输出的样子)。

Averages of Healthy Patients:
[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00]
Averages of Ill Patients:
[56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04]
Seperation Values are:
[54.61, 0.69, 3.19, 131.91, 247.06, 0.15, 1.00, 148.82, 0.34, 1.08, 1.62, 0.70, 4.79, 1.02]

我尝试了不同的方法来尝试获取中位数,但我的所有尝试都失败了,所以我正式 运行 不知道如何获取它。因此,如果您可以看看我是否走在正确的轨道上,只是错过了一些小事或完全偏离了方向,我将不胜感激对这个问题的任何见解。

ill_avg = [ill / len(iList) for ill in iList_sum]
hlt_avg = [ hlt / len(hList) for hlt in hList_sum]
median = [(b / len(bList) for b in bList_sum) //2 ]


print('Total of lines Processed: ' + str(numline))
print("Total Healthy Count: " + str(HPcounter))
print("Total Ill Count: " + str(IPcounter))
print("Averages of Healthy Patients:")
print(str(hlt_avg))
print("Averages of Ill Patients ")
print('[' + ', '.join(['{:.2f}'.format(number) for number in ill_avg]) + ']')
print("Seperation Values are:")
print(median)

试图通过将两个平均值相加来获得中位数,但我无法让它工作,我最近的尝试是制作一个单独的平均值(bList,它是所有患者)并获得其中的中位数。如果我可以在没有 bList 的情况下使第一种方式工作,我会更喜欢这种方式,因为它会减少代码的冗余并希望更小。 抱歉,我忘了说我不应该使用 numpy 或 panda,因为我们还没有讨论 class 中的那两个。

使用 numpy:

import numpy

a = numpy.array([[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00],
                 [56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04]])

print numpy.mean(a, axis=0)

或者如果你必须避免 numpy,请使用纯 Python:

from __future__ import division

def mean(a):
    return sum(a) / len(a)

a =  [[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00],
      [56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04]]

print map(mean, zip(*a))