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.
Le but de ce bout de code:
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)
- 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
Partager