python – pandas数据框中的高效功能减少
发布时间:2020-12-20 13:37:40 所属栏目:Python 来源:网络整理
导读:我有一个大约200K样本的大数据集.每个样本都有一组来自各种约100K可能特征的特征(大约10个),以及一些浮点型测量. 例如,对于给定的数据集 Features trial observations{1,40020,8222} 4 2{1,22,16000} 14 8{1,20,1000} 1 0{42,16000} 2 1 所以我需要一个函数f
我有一个大约200K样本的大数据集.每个样本都有一组来自各种约100K可能特征的特征(大约10个),以及一些浮点型测量.
例如,对于给定的数据集 Features trial observations {1,40020,8222} 4 2 {1,22,16000} 14 8 {1,20,1000} 1 0 {42,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 samples in samples],index = [sample.features for samples in samples]).groupby(lambda x:x& test_features,sort = False).sum() 但表现不够好.我猜这是因为我正在为groupby使用一个函数.有没有办法优化这个? 解决方法
您可以尝试使用frozenset而不是set来准备分组数据,因为frozenset是可清除的.
首先将要素列从集合转换为冻结集: df['Features'] = df['Features'].apply(frozenset) 然后,这将为您的数据分组提供所需的交集: df['Features'] & frozenset({1,40020}) Out[64]: 0 (1,40020) 1 (1,40020) 2 (1) 3 () 最终,您获得了数据帧结果: df.groupby(df['Features'] & frozenset({1,40020}),sort=False).sum() Out[65]: trial observations Features (1,40020) 18 10 (1) 1 0 () 2 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |