In [10]: import pandas as pd
import numpy as np
from collections import Counter
#create a fake data set
dates = pd.date_range("2012-01-01", "2015-01-01", freq="10min")
dates = np.random.choice(dates, 2000000, replace=True)
根据以下建议,以下是目前最快的:
^{pr2}$
使用counter可以创建一个每项计数的字典,然后将其转换为pd.Series,以便进行过滤
In [11]: %%timeit
foo = pd.Series(Counter(dates))
filtered_dates = np.array(foo[foo > 20].index)
1 loop, best of 3: 12.3 s per loop
对于一个包含200万个项目的数组来说,这还不算太糟,与以下相比:
In [12]: dates = list(dates)
filtered_dates = [e for e in set(dates) if dates.count(e) > 20]
在这些类型的操作中,Numpy比熊猫慢,就像
np.unique
排序一样,而熊猫的机器并不需要。此外,这是更习惯用法。在熊猫
Numpy(来自其他解决方案)
^{pr2}$实际上可以试试^{} 。在numpyv1.9中,
unique
可以返回一些额外的值,比如unique_indices
,unique_inverse
,unique_counts
。在如果你想用熊猫,这将是相当简单,可能相当快。您可以使用groupby filter。比如:
根据下面的建议,我正在使用
np.unique
来编辑此文件以包括计时。这是目前为止最好的解决办法根据以下建议,以下是目前最快的:
^{pr2}$使用counter可以创建一个每项计数的字典,然后将其转换为
pd.Series
,以便进行过滤对于一个包含200万个项目的数组来说,这还不算太糟,与以下相比:
我不会等清单理解版完成的。。。在
相关问题 更多 >
编程相关推荐