我有一个包含约20万个样本的大数据集。每个样本都有一组大约10个特征,这些特征来自大约10万个可能的特征集合,并带有一些浮点型的测量值。
例如,在给定的数据集中:
所以我需要一个函数f,满足以下条件:
例如,在给定的数据集中:
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函数。有没有一种优化这个过程的方法?
df.loc[:,df['features'].isin(set_of_features)].groupby(df['Features']).sum()
;速度应该会更快。 - Jeff