Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utiliser pandas et ExcelWriter

lire, trier, calculer des données

    16 novembre 2018 à 23:50:33

    Le code ci-joint permet d'ouvrir une feuille Excel, récupérer des données, les traiter et écrire les résultats dans une autre feuille de calcul.
    Ce qui est étrange, c'est qu'il fonctionne la première fois, mais la seconde fois un problème apparaît. Et je ne sais pas comment corriger le problème.

    Le programme calcul les différents total puis écrit le nombre d'articles vendu en fonction de l'article.
    La deuxième fois, on voit que les valeurs TOTAL CB, Espèce ou Chèque disparaissent et je ne comprends pas pourquoi.



    C'est l'écriture des variables qui créer le problème. On peut lancer le code plusieurs sans écrire et il détecte toujours les totales mais après écriture le code ne détecte plus les totales
    Je vous conseil de faire une copie du fichier Excel puis de tester le programme sur la copie.
    Je vous ai mis le code.
    Si vous avez le temps de jeter un œil s'il vous plaît.
    Je vous en remercie

    Fichier excel:

    https://drive.google.com/file/d/1LtDvot78Uh-e8MhiG1Ti-MLc05aXyGua/view?usp=sharing


    import pandas as pd
    
    import numpy as np
    
    import xlsxwriter
    
    from openpyxl import load_workbook
    
    from pandas import ExcelWriter
    
    from pandas import ExcelFile
    
    data=pd.read_excel("site.xlsx","Feuille1", keep_default_na=False, skiprows = [0,1]) 
    
    print(data)
    
    
    
    totalballon=[]
    
    b=[]
    
    espece=np.where(data['Unnamed: 2']=='TOTAL Espèces')[0]
    
    carte=np.where(data['Unnamed: 2']=='TOTAL CB')[0]
    
    cheque=np.where(data['Unnamed: 2']=='TOTAL Chèque')[0]
    
    
    
    articles=["Ballon bleu", "CH24 jaune", "Ballon rouge", "Chapeau", "Ballon vert", "Pantalon", "Fleurs"]
    
    
    
    print(np.sum(data['Unnamed: 4'][espece]))
    
    print(np.sum(data['Unnamed: 4'][carte]))
    
    print(np.sum(data['Unnamed: 4'][cheque]))
    
    
    
    for i in articles:
    
        nb=np.where(data['Unnamed: 2']==i)[0]
    
        b.append(np.sum(data['Unnamed: 1'][nb]))
    
    print(b)
    
    
    
    ballon=["Ballon bleu", "Ballon rouge", "Ballon vert"]
    
    
    
    for j in ballon:
    
        nb=np.where(data['Unnamed: 2']==j)[0]
    
        totalballon.append(np.sum(data['Unnamed: 1'][nb]))
    
    totalballon=[sum(totalballon)]
    
    print(totalballon)
    
    
    
    with pd.ExcelWriter('site.xlsx', engine='openpyxl') as writer:
    
        writer.book = load_workbook('site.xlsx')
    
        
    
        TOTALespece = np.sum(data['Unnamed: 4'][espece])
    
        TOTALcarte = np.sum(data['Unnamed: 4'][carte])
    
        TOTALcheque = np.sum(data['Unnamed: 4'][cheque])
    
        
    
        df1 = pd.DataFrame({'articles':articles})
    
        df2 = pd.DataFrame({'nombres':b})
    
        df3 = pd.DataFrame({'Total ballon':totalballon})
    
        
    
        dfe = pd.DataFrame({'TOTAL Espèces':[TOTALespece]})
    
        dfcarte = pd.DataFrame({'TOTAL CB':[TOTALcarte]})
    
        dfcheque = pd.DataFrame({'TOTAL Chèque':[TOTALcheque]})
    
        
    
        df1.to_excel(writer, "Feuille2", index=False)
    
        df2.to_excel(writer, "Feuille2", index=False, startcol=1)
    
        df3.to_excel(writer, "Feuille2", index=False, startcol=2)
    
        dfe.to_excel(writer, "Feuille2", index=False, startcol=3)
    
        dfcarte.to_excel(writer, "Feuille2", index=False, startcol=4)
    
     
    
        dfcheque.to_excel(writer, "Feuille2", index=False, startcol=5)



    • Partager sur Facebook
    • Partager sur Twitter

    Utiliser pandas et ExcelWriter

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown