有效计算大量/不精确数据量的统计数据的方法

Gia*_*ear 2 python statistics performance memory-efficient

我有超过6500万个数值存储在文本文件中.我需要计算最大值,最小值,平均值,标准差以及25%,50%和75%的百分位数.

通常我会使用附加的代码,但我需要一种更有效的方法来计算这些指标,因为我无法将所有值p存储在列表中.如何在Python中更有效地计算这些值?

import numpy as np

np.average(obj)
np.min(mylist)
np.max(mylist)
np.std(mylist)
np.percentile(obj, 25)
np.percentile(obj, 50)
np.percentile(obj, 75)

maxx = float('-inf')
minx = float('+inf')
sumz = 0
for index, p in enumerate(open("foo.txt", "r")):
    maxx = max(maxx, float(p))
    minx = min(minx, float(p))
    sumz += float(p)
index += 1
my_max = maxx 
my_min = minx 
my_avg = sumz/index
Run Code Online (Sandbox Code Playgroud)

Ant*_*ala 5

使用二进制文件.然后,您可以使用numpy.memmap它将其映射到内存并执行各种算法,即使数据集大于RAM也是如此.

您甚至可以使用numpy.memmap创建一个内存映射数组,并从文本文件中读取您的数据...您可以使用它,当您完成后,您还可以使用二进制格式的数据.