Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Boucle]Pyhton pour données scientifique

Sujet résolu
    3 mars 2021 à 13:36:24

    Bonjour 

    Je m'adresse à vous car je n'arrive pas à trouver une boucle qui me permettrait d'obtenir un diagramme camembert pour chaque mois allant de 2013 à 2020 sachant que le nombre de mois varie de 3 à 12 en fonctions des années. Je ne me vois pas le faire à la main même avec du copier coller je vous joins le code mais sans la boucle, en comptant grandement sur votre aide.

    Je vous remercie d'avance 

    import os 
    import numpy as np 
    import matplotlib.pyplot as plt
    
    os.chdir('C:/Users/Jostofe/MIO')
    os.listdir(".")# verifier le contenu du repertoire
    tab=np.genfromtxt('C:/Users/Jostofe/MIO/data_cyto.csv',delimiter=';',skip_header=1)
    # verifier la taille
    tab.shape
    
    CryptoAb= tab[:,2]
    NanoAb=tab[:,8]
    PicoAb=tab[:,14]
    PredAb=tab[:,20]
    ProchloroAb=tab[:,26]
    SynAb=tab[:,32]
    BactAb=tab[:,38]
    
    #On enleve les nan
    CryptoAb1=CryptoAb[np.logical_not(np.isnan(CryptoAb))]
    NanoAb1=NanoAb[np.logical_not(np.isnan(NanoAb))]
    PicoAb1=PicoAb[np.logical_not(np.isnan(PicoAb))]
    PredAb1=PredAb[np.logical_not(np.isnan(PredAb))]
    ProchloroAb1=ProchloroAb[np.logical_not(np.isnan(ProchloroAb))]
    SynAb1=SynAb[np.logical_not(np.isnan(SynAb))]
    BactAb1=BactAb[np.logical_not(np.isnan(BactAb))]
    #%%
    #Pour la petite rade  Octobre 2013
    OcCryptoAbPR=CryptoAb1[0:1:1]
    OcNanoAbPR=NanoAb1[0:1:1]
    OcPicoAbPR=PicoAb1[0:1:1]
    OcPredAbPR=PredAb1[0:1:1]
    OcProchloroAbPR=ProchloroAb1[0:1:1]
    OcSynAbPR=SynAb1[0:1:1]
    #CryptoAbPR1=np.sum(CryptoAbPR)/3
    #NanoAbPR1=np.sum(NanoAbPR)/3
    #PicoAbPR1=np.sum(PicoAbPR)/3
    #PredAbPR1=np.sum(PredAbPR)/3
    #ProchloroAbPR1=np.sum(ProchloroAbPR)/3
    ##SynAbPR1=np.sum(SynAbPR)/3
    
    #La grande rade Octobre 2013
    OcCryptoAbGR=CryptoAb1[1:2:1]
    OcNanoAbGR=NanoAb1[1:2:1]
    OcPicoAbGR=PicoAb1[1:2:1]
    OcPredAbGR=PredAb1[1:2:1]
    OcProchloroAbGR=ProchloroAb1[1:2:1]
    OcSynAbGR=SynAb1[1:2:1]
    #CryptoAbGR1=np.sum(CryptoAbGR)/3
    #NanoAbGR1=np.sum(NanoAbGR)/3
    #PicoAbGR1=np.sum(PicoAbGR)/3
    #PredAbGR1=np.sum(PredAbGR)/3
    #ProchloroAbGR1=np.sum(ProchloroAbGR)/3
    #SynAbGR1=np.sum(SynAbGR)/3
    
    plt.subplots(figsize=(6,9))
    plt.subplot(2,1,1)
    XOcPR=[OcCryptoAbPR,OcNanoAbPR,OcPicoAbPR,OcPredAbPR,OcProchloroAbPR,OcSynAbPR]
    plt.pie(XOcPR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.subplot(2,1,2)
    XOcGR=[OcCryptoAbGR,OcNanoAbGR,OcPicoAbGR,OcPredAbGR,OcProchloroAbGR,OcSynAbGR]
    plt.pie(XOcGR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.savefig('PR et GR Octobre 2013.png')
    #%%
    #novembre 
    NovCryptoAbPR=CryptoAb1[2:3:1]
    NovNanoAbPR=NanoAb1[2:3:1]
    NovPicoAbPR=PicoAb1[2:3:1]
    NovPredAbPR=PredAb1[2:3:1]
    NovProchloroAbPR=ProchloroAb1[2:3:1]
    NovSynAbPR=SynAb1[2:3:1]
    
    
    NovCryptoAbGR=CryptoAb1[3:4:1]
    NovNanoAbGR=NanoAb1[3:4:1]
    NovPicoAbGR=PicoAb1[3:4:1]
    NovPredAbGR=PredAb1[3:4:1]
    NovProchloroAbGR=ProchloroAb1[3:4:1]
    NovSynAbGR=SynAb1[3:4:1]
    
    plt.subplots(figsize=(6,9))
    plt.subplot(2,1,1)
    XNovPR=[NovCryptoAbPR,NovNanoAbPR,NovPicoAbPR,NovPredAbPR,NovProchloroAbPR,NovSynAbPR]
    plt.pie(XNovPR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.subplot(2,1,2)
    XNovGR=[NovCryptoAbGR,NovNanoAbGR,NovPicoAbGR,NovPredAbGR,NovProchloroAbGR,NovSynAbGR]
    plt.pie(XNovGR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.savefig('PR et GR Novembre 2013.png')
    
    
    
    #%%
    #decembre
    DecCryptoAbPR=CryptoAb1[4:5:1]
    DecNanoAbPR=NanoAb1[4:5:1]
    DecPicoAbPR=PicoAb1[4:5:1]
    DecPredAbPR=PredAb1[4:5:1]
    DecProchloroAbPR=ProchloroAb1[4:5:1]
    DecSynAbPR=SynAb1[4:5:1]
    
    
    DecCryptoAbGR=CryptoAb1[5:6:1]
    DecNanoAbGR=NanoAb1[5:6:1]
    DecPicoAbGR=PicoAb1[5:6:1]
    DecPredAbGR=PredAb1[5:6:1]
    DecProchloroAbGR=ProchloroAb1[5:6:1]
    DecSynAbGR=SynAb1[5:6:1]
    
    plt.subplots(figsize=(6,9))
    plt.subplot(2,1,1)
    XdecPR=[DecCryptoAbPR,DecNanoAbPR,DecPicoAbPR,DecPredAbPR,DecProchloroAbPR,DecSynAbPR]
    plt.pie(XdecPR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.subplot(2,1,2)
    XdecGR=[DecCryptoAbGR,DecNanoAbGR,DecPicoAbGR,DecPredAbGR,DecProchloroAbGR,DecSynAbGR]
    plt.pie(XdecGR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
    plt.savefig('PR et GR Decembre 2013.png')



    • Partager sur Facebook
    • Partager sur Twitter
      3 mars 2021 à 15:01:39

      tu écrases en partie tes données (le bloc en ligne 43 écrase les données récupérées dans le bloc ligne 29; idem pour les blocs suivants) <= FAUX: je n'avais pas remarqué tout de suite la différence entre les noms de variables :honte:

      un exemple issu de la doc du graph en camembert > https://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/pie_features.html#sphx-glr-gallery-pie-and-polar-charts-pie-features-py 

      Ensuite, vu que tu ne récupères qu'une seule valeur à chaque fois, autant récupérer l'indice, sans utilisation du slicing

      NovCryptoAbPR=CryptoAb1[2:3:1]  devient NovCryptoAbPR=CryptoAb1[2]

      De là, tu verra qu'il n'y a que cet indice qui change, hormis le nom du fichier de sortie, mais ces noms tu peux aussi les mettre (ou les récupérer) dans une liste

      mois=["octobre 2013","novembre 2013", "décembre 2013"] #à compléter
      for i in range(1,3*2, 2): #pour i = 1 à i=5 (6-1) par pas de 2; à adapter
          CryptoAbPR=CryptoAb1[i]
          NanoAbPR=NanoAb1[i]
          PicoAbPR=PicoAb1[i]
          PredAbPR=PredAb1[i]
          ProchloroAbPR=ProchloroAb1[i]
          SynAbPR=SynAb1[i]
           
          CryptoAbGR=CryptoAb1[i+1]
          NanoAbGR=NanoAb1[i+1]
          PicoAbGR=PicoAb1[i+1]
          PredAbGR=PredAb1[i+1]
          ProchloroAbGR=ProchloroAb1[i+1]
          SynAbGR=SynAb1[i+1]
       
          plt.subplots(figsize=(6,9))
          plt.subplot(2,1,1)
          XPR=[CryptoAbPR,NanoAbPR,PicoAbPR,PredAbPR,ProchloroAbPR,SynAbPR]
          plt.pie(XPR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
          plt.subplot(2,1,2)
          XGR=[CryptoAbGR,NanoAbGR,PicoAbGR,PredAbGR,ProchloroAbGR,SynAbGR]
          plt.pie(XGR,labels=['Crypto','Nano','Pico','pred','prochloro','Syn'],autopct='%1.1f%%')
          plt.savefig(f'PR et GR {mois[i//2]}.png')

      si je n'ai pas fait d'erreur.

      -
      Edité par umfred 3 mars 2021 à 15:11:50

      • Partager sur Facebook
      • Partager sur Twitter
        3 mars 2021 à 15:05:03

        Le bloc ligne 29 n'a rien à voir avec le bloc ligne 43 car ce n'est pas le même site et les valeurs sont différentes
        • Partager sur Facebook
        • Partager sur Twitter
          3 mars 2021 à 15:08:38

          j'ai oublié d'effacer ce passage de mon post, je l'ai remarqué après (c'était par rapport au nom des variables qui se ressemblent beaucoup, et je n'avais pas vu que les 1ères étaient en AbPR et les secondes en AbGR)
          • Partager sur Facebook
          • Partager sur Twitter
            3 mars 2021 à 15:12:51

            Ok pas de soucis ^^

            merci de l'aide plus qu'a tester tout ca, j'avais tous les elements mais impossible de construire la boucle j'ai encore du progrès à faire 

            • Partager sur Facebook
            • Partager sur Twitter
              3 mars 2021 à 15:19:01

              Après le contenu de la boucle pourrait devenir une fonction à laquelle tu passerais tes tableaux, l'indice et le nom du fichier de sauvegarde; et la boucle appellerai cette fonction.

              Le principe c'est de repérer la structure qui se répète, et ce qui change dans les répétitions
              • Partager sur Facebook
              • Partager sur Twitter
                3 mars 2021 à 15:30:45

                Je vois en tout cas un grand merci
                • Partager sur Facebook
                • Partager sur Twitter

                [Boucle]Pyhton pour données scientifique

                × 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