Python 估计唯一字符串的数量

Python 估计唯一字符串的数量,python,pandas,numpy,statistics,Python,Pandas,Numpy,Statistics,任务是估计(而不是计数)唯一字符串。这很难,因为我们有很多字符串,没有超过8MB的内存 因此,误差不得超过5% 首先,我尝试制作布卢姆过滤器。我选择C++。但字符串包含来自俄语字母表的字母,这使得任务更加困难 另外,在这个任务中,可以将Python与numpy和pandas一起使用,但我不知道如何将它用于这个任务 有人知道怎么用吗?也许有一些统计数据?知道多少字符串“很多”以及它们可以有多大似乎很有用。如果您的策略涉及一些错误概率(由于散列冲突等),那么您的估计应该考虑该概率。(我想这个解决方案

任务是估计(而不是计数)唯一字符串。这很难,因为我们有很多字符串,没有超过8MB的内存

因此,误差不得超过5%

首先,我尝试制作布卢姆过滤器。我选择C++。但字符串包含来自俄语字母表的字母,这使得任务更加困难

另外,在这个任务中,可以将Python与numpy和pandas一起使用,但我不知道如何将它用于这个任务


有人知道怎么用吗?也许有一些统计数据?

知道多少字符串“很多”以及它们可以有多大似乎很有用。如果您的策略涉及一些错误概率(由于散列冲突等),那么您的估计应该考虑该概率。(我想这个解决方案也可以跟踪这样的统计数据,并足够灵活地构建自己的估计值,但如果您提前知道一般界限,它可能有助于找到一个好方法。)8MB不是太多,您可以直接使用pandas.Series.nunique()方法来创建这个系列,使用pd.from_csv(…)或其他适合您的文件格式的函数。如果您想将数据扩展到100MB或有任何其他原因,您可以看看HyperLogLog算法(并计算出所有不同的问题,可能还发明了其他一些有用的算法)。HLL是在一个pip包hyperloglog中实现的,如果您想试试的话。