Estimation du temps de lecture : 3 procès-verbal
Vous travaillez peut-être à l'automatisation de certaines exportations vers Excel en utilisant Python pour comparer des fichiers ou en ajoutant purement et simplement des formules à un fichier Excel avant de l'ouvrir.
Nous expliquons ici comment ajouter des formules à votre sortie Excel en utilisant Numpy ou comment ajouter les calculs à des cellules spécifiques de la sortie.
Ajout de formules à des cellules spécifiques
Tout d'abord, regardons une feuille de calcul normale avec quelques calculs, les formules sont saisies dans ces feuilles. L'objectif final est de faire en sorte que le code Python le fasse pour nous, une étape de moins.
Comme vous pouvez le constater, les cellules contiennent les formules, mais ce processus prendrait beaucoup de temps si vous deviez le faire plusieurs fois, dans plusieurs feuilles de calcul.
Pour contourner ce problème, nous pouvons écrire la logique Python comme suit :
- Créez trois listes et trois cadres de données comme suit.
datasetA_list = np.array([1,2,3,4,5,6,7,8,9,10])
datasetB_list = np.array([9,8,65,43,3,21,3,2,1,7])
dataset_list = ('sum','average','median','standard deviation','count','correlation')
datasetA = pd.DataFrame(datasetA_list,columns=['ValueA'])
datasetB = pd.DataFrame(datasetB_list,columns=['ValueB'])
dataset_list_calcs = pd.DataFrame(dataset_list, columns=['Calcs'])
2. Ensuite, créez un chemin vers l'endroit où vous allez stocker les données comme suit :
path = 'output.xlsx'
3. Dans cette étape suivante, créez le classeur et l'emplacement où les données seront stockées. Cela permettra de charger les rubriques créées à l'étape 1 à un endroit particulier de la feuille de calcul.
workbook = pd.ExcelWriter(path, engine='openpyxl')
workbook.book = load_workbook(path)
workbook.sheets = dict((ws.title,ws) for ws in workbook.book.worksheets)
datasetA.to_excel(workbook,sheet_name="Sheet1", startrow=1,index=False, header=True,)
datasetB.to_excel(workbook,sheet_name="Sheet1", startrow=1, startcol=2,index=False, header=True)
dataset_list_calcs.to_excel(workbook,sheet_name="Sheet1", startrow=1, startcol=4,index=False, header=True)
4. Chargez les formules dans des cellules à côté des rubriques correspondantes. Cela devrait permettre d'aligner ces formules à côté de l'intitulé correspondant créé à l'étape 1.
###Création de calculs pour l'ensemble de donnéesA
sheet = workbook.sheets['Sheet1']
sheet['E2'] = 'CalcsA'
sheet['F3'] = '=SUM(A3:A12)'
sheet['F4'] = '=AVERAGE(A3:A12)'
sheet['F5'] = '=MEDIAN(A3 :A12)'
sheet['F6'] = '=STDEV(A3:A12)'
sheet['F7'] = '=COUNT(A3:A12)'
sheet['F8'] = '=CORREL(A3:A12,C3:C12)'
###Création de calculs pour l'ensemble de donnéesB
sheet = workbook.sheets['Sheet1']
sheet['H2'] = 'CalcsB'
sheet['H3'] = '=SUM(C3:C12)'
sheet['H4'] = '=AVERAGE(C3:C12)'
sheet['H5'] = '=MEDIAN(C3 :C12)'
sheet['H6'] = '=STDEV(C3:C12)'
sheet['H7'] = '=COUNT(C3:C12)'
sheet['H8'] = '=CORREL(A3:A12,C3:C12)'
Utilisez Numpy pour créer les calculs
a. Créez les calculs que vous allez introduire dans la feuille de calcul, en utilisant Numpy.
a = np.sum(datasetA_list)
b = np.average(datasetA_list)
c = np.median(datasetA_list)
d = np.std(datasetA_list,ddof=1) ## Setting DDOF = 0 will give a differnt figure, this corrects to match the output.
f = np.count_nonzero(datasetA_list)
g = np.corrcoef(datasetA_list,datasetB_list)
b. Créez les titres et attribuez-les à des cellules particulières.
sheet['E14'] = 'Numpy Calculations'
sheet['E15'] = 'Sum'
sheet['E16'] = 'Average'
sheet['E17'] = 'Median'
sheet['E18'] = 'Standard Deviation'
sheet['E19'] = 'Count'
sheet['E20'] = 'Correlation'
c. Affectez les variables de l'étape a à un ensemble de cellules.
sheet['F15'] = a
sheet['F16'] = b
sheet['F17'] = c
sheet['F18'] = d
sheet['F19'] = f
sheet['F20'] = str(g)
d. Enregistrez le classeur et fermez-le - Cette étape est importante et doit toujours être incluse.
workbook.save()
workbook.close()