Bonjour à tous,
j'ai découvert les librairies itertools et Pandas depuis 2 jours, j'ai écrit un bout de code qui répond à mes attentes mais l'exécution est beaucoup trop longue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from itertools import *
import pandas as pd
 
items = [1,2,3,4,5,6,7,8,9,10,11,12]
data = [200,250,190,0,132,149,168,0,198,184,176,203]
colonnes = ["Combinaison","Nb","Total","Min","Max","Ecart"]
df = pd.DataFrame(columns = colonnes)
i = 0
for y in range(5,10):
    for c in combinations(items, y):
        Somme = 0
        Mini = 0
        Maxi = 0
        for a in c :
            Somme += data[a-1]
            if Mini == 0 or Mini > data[a-1] :
                Mini = data[a-1]
            if Maxi < data[a-1] :
                Maxi = data[a-1]
        ligne = (c,y,Somme,Mini,Maxi,Maxi-Mini)
        df.loc[i] = ligne
        i += 1   	
print(df)
Le but de ce bout de code:
- je vais donner une série variable de 10 à 12 poids stockés dans la variable data (j'ai mis des données fictives pour faire les essais)
- Je demande de calculer toutes les combinaisons de 5 , 6 , 7 , 8 et 9 nombres ainsi que la somme, le minimum, le maximum et l'écart maxi pour chacune de ces combinaisons.
- je souhaite ensuite remplir à la volée un dataframe avec les 3223 combinaisons possibles. Mais comme je le remplis une ligne à la fois c'est très long. Comment puis-je optimiser l'insertion de ces données dans le dataframe alors que j'ai des opérations à réaliser sur chaque combinaison pour définir la somme, le mini et le maxi

Merci d'avance de votre aide