Last active
December 1, 2023 21:18
-
-
Save hdary85/10c270f5675959141a7e5cdb78f15cee to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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