我有一个大约 200K 样本的大数据集。每个样本都有一组特征(约 10 个),来自大约 100K 种可能的特征,以及一些浮点型测量。
例如,对于给定的数据集
Features trial observations
{1, 40020, 8222} 4 2
{1, 40020, 22, 16000} 14 8
{1, 20, 22, 1000} 1 0
{42, 22, 16000} 2 1
所以我需要一个函数 f 使得:
f(data, {1, 40020})=
Features trial observations
{1, 40020} 18 10
{1} 1 0
{} 2 1
f(data, {22, 40020})=
Features trial observations
{40020} 4 2
{40020, 22} 14 8
{22} 3 1
因此,函数 f 通过将特征列与给定集合相交并对聚合列求和来对数据进行分组。
考虑到我需要为具有许多不同特征集的同一数据集调用“f”作为第二个参数,因此可以进行一次以加快每次调用的任何预处理都可能是有益的。
我发现最快的方法是
pandas.DataFrame([sample.data for sample in samples], index = [sample.features for sample in samples]).groupby(lambda x: x & test_features, sort = False).sum()
但是表现还不够好。我猜这是因为我正在使用 groupby 的功能。有没有办法优化这个?