Skip to content

Instantly share code, notes, and snippets.

@hdary85
Last active December 1, 2023 21:18
Show Gist options
  • Select an option

  • Save hdary85/10c270f5675959141a7e5cdb78f15cee to your computer and use it in GitHub Desktop.

Select an option

Save hdary85/10c270f5675959141a7e5cdb78f15cee to your computer and use it in GitHub Desktop.
# Liste de tous les produits uniques
all_products = set(df['PRODUIT'])
# Grouper les produits achetés par CLIENT
grouped = df.groupby('CLIENT')['PRODUIT'].apply(set)
# Générer toutes les combinaisons de 3 à 5 produits
unique_combos = []
used_products = set()
for _, products in grouped.items():
for r in range(3, 6):
for combo in combinations(products, r):
if set(combo).issubset(all_products) and not any(product in used_products for product in combo):
used_products.update(combo)
unique_combos.append(combo)
# Calculer la popularité totale pour chaque combinaison
combo_popularity = {}
for combo in unique_combos:
total_popularity = sum(df[df['PRODUIT'].isin(combo)].groupby('PRODUIT').size())
combo_popularity[combo] = total_popularity
# Vérifier s'il existe une combinaison contenant tous les produits
missing_products = all_products - set(chain.from_iterable(unique_combos))
if missing_products:
unique_combos.append(tuple(missing_products))
combo_popularity[tuple(missing_products)] = sum(df[df['PRODUIT'].isin(missing_products)].groupby('PRODUIT').size())
# Affichage des combinaisons avec la popularité totale
for idx, combo in enumerate(unique_combos, start=1):
print(f"Forfait {idx}: {combo} - Popularité totale: {combo_popularity[combo]}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment