【发布时间】:2015-08-10 18:29:05
【问题描述】:
我正在尝试使用 Pandas 查找每列中不同值的计数。这就是我所做的。
import pandas as pd
import numpy as np
# Generate data.
NROW = 10000
NCOL = 100
df = pd.DataFrame(np.random.randint(1, 100000, (NROW, NCOL)),
columns=['col' + x for x in np.arange(NCOL).astype(str)])
我需要计算每列的不同元素的数量,如下所示:
col0 9538
col1 9505
col2 9524
执行此操作的最有效方法是什么,因为此方法将应用于大小大于 1.5GB 的文件?
根据答案,df.apply(lambda x: len(x.unique())) 是最快的 (notebook)。
%timeit df.apply(lambda x: len(x.unique()))
10 loops, best of 3: 49.5 ms per loop
%timeit df.nunique()
10 loops, best of 3: 59.7 ms per loop
%timeit df.apply(pd.Series.nunique)
10 loops, best of 3: 60.3 ms per loop
%timeit df.T.apply(lambda x: x.nunique(), axis=1)
10 loops, best of 3: 60.5 ms per loop
【问题讨论】: