У меня есть большой набор данных около 200 тыс. Выборок. каждый образец имеет набор признаков (около 10) из множества около 100 тыс. возможных возможностей и несколько измерений с плавающим типом.Эффективное уменьшение функции в кадре данных pandas
Например, для данных набора данных
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(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» для одного набора данных с множеством различных наборов функций в качестве второго аргумента, поэтому любая предварительная обработка, которую можно сделать один раз для ускорения каждого вызова, вероятно, будет полезна.
Самый быстрый способ я нашел
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. есть ли способ оптимизировать это?
PLS опубликовать более полный пример что вы делаете, а также версию панды. – Jeff
Я изменил пример, чтобы быть более явным, пожалуйста, скажите мне, ясно ли это сейчас. – idanzalz
попробуйте выбрать, прежде чем группировать, что-то вроде этого: '' df.loc [:, df ['features']. Isin (set_of_features)]. Groupby (df ['Features']). Sum() ''; должно быть намного быстрее – Jeff