Я работаю с большим фреймом данных (около 7 мил записей) и мне нужно перебрать некоторые значения по уникальному подмножеству этого.Скажем, мой исходный фрейм данных "df" содержит столбцы user_id, name, address, date и product, тогда как мой поднабор фреймов данных "s" (который в действительности составляет около 30 тыс. Строк) представляет собой список уникальных продуктов в "df".
Я хочу найти перекрестную вероятность покупки 2-х заданных продуктов (немного того, что используется в рекомендательных алгоритмах), однако при этом я работаю с циклом с набором простых шагов манипулирования данными - сводная таблица будетбыло бы неплохо, но набор данных кажется слишком большим.
Я пробовал цикл (см. код ниже), однако есть около 30 тыс. итераций, которые из моего обзора времени приведут к вычислению в течение 48-55 часов.Кроме того, чтобы попробовать вышеупомянутый сводный код, который просто сбой Python.Я также пытался использовать списки и функции, но производительность увеличивается незначительно, без реального смысла.
Цикл, который у меня есть:
out = []
for s in product :
o = pd.DataFrame(df["name"].loc[df["product_code"] == s])
c = pd.merge(df, o, on="name")
d = c.loc[c['product_code']!=i]
product_cts = d.groupby('item_code') ['name'].count().sort_values(ascending=False).reset_index(name ='product_counts')
product_cts["cross_prob"] = product_cts["product_counts"]/len(o)
product_cts["origin_product"] = s
out.append(product_cts)
Любые идеи о том, как реорганизовать этоили увеличить производительность?