Advertisement
raphael76280

Untitled

Jul 18th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.53 KB | None | 0 0
  1.  
  2. #!/usr/bin/env python
  3. # coding: utf-8
  4.  
  5. # In[6]:
  6.  
  7.  
  8. import pandas as pd
  9. import math
  10. import numpy
  11.  
  12.  
  13. # In[3]:
  14.  
  15.  
  16. from matplotlib import pyplot as plt
  17.  
  18.  
  19. # In[24]:
  20.  
  21.  
  22. sample_data=pd.read_csv('DataPlanning.csv',delimiter=';')
  23.  
  24.  
  25. # In[27]:
  26.  
  27.  
  28. #Ligne 1 on créer un tableau vide d'une taille prédifinit de 999 éléments
  29. #chasseurs = [None]*999
  30.  
  31.  
  32. # In[51]:
  33.  
  34.  
  35. #Après pour tout les id_villageois dans excel on créer une variable id
  36. #on vérifié que id est un nombre et pas une erreur NaN
  37. #on converti l'id en nombre entier car on en a besoin pour les tableaux
  38. #et après on prend la case numéro "id" du tableaux des chasseurs et on lui donne la valeur du tableau XCEL pour l'id_villageois ==id
  39. #for id in sample_data.id_villageois:
  40. #    if type(id) == float and not math.isnan(id):
  41. #        id=int(id)
  42. #        chasseurs[id]=sample_data[sample_data.id_villageois==id]
  43.  
  44.  
  45. # In[35]:
  46.  
  47. horaires=[]
  48. for i in numpy.arange(0, 24, 0.5):
  49.     horaires.append(i)
  50.  
  51.  
  52. # In[72]:
  53.  
  54.  
  55. class session_chasse:
  56.     def __init__(self, idChasse, depart, retour):
  57.         self.idChasse = idChasse
  58.         self.depart = depart
  59.         self.retour = retour
  60.         duree = 0
  61.         if (retour < depart):
  62.             duree=(retour+24)-depart
  63.         else:
  64.             duree=retour-depart
  65.         self.duree=duree
  66.  
  67.  
  68.     #On ajoute a l'object session_chasse une fonction pour tester 1 horaire
  69.     def testHoraire(self, horaire):
  70.         #print(self.depart + self.duree)
  71.         if (self.depart < horaire and self.depart + self.duree > horaire):
  72.             return 1
  73.         else:
  74.             if (self.depart + self.retour > 24 and self.retour > horaire):
  75.                 return 1
  76.             else:
  77.                 return 0
  78.  
  79.  
  80.  
  81.  
  82. class chasseur:
  83.     def __init__ (self, id_vlg, session_de_chasses):
  84.         self.id_vlg = id_vlg
  85.         self.session_de_chasses = session_de_chasses
  86.  
  87.     #On ajoute a l'object chasseur une fonction pour généré un planning
  88.     def doPlanning(self):
  89.         #On créer un tableau de 48 entrée
  90.         planning = [int]*len(horaires)
  91.         #pour toute les tranche horaire
  92.         for h in range(0, len(horaires)):
  93.             sum = 0
  94.             #on fais la somme de chaque session de chasse
  95.             for chasse in self.session_de_chasses:
  96.                 sum+=chasse.testHoraire(horaires[h])
  97.             #on ajoute la somme dans le tableau
  98.             planning[h]=sum
  99.         #On renvoit le tableau
  100.         return planning
  101.        
  102.  
  103. #Fonction pour convertire tes heure décimal qui contienne une virgule !!!!!! En programation les nombre a virgules on des "." pas des virgules
  104. def convert_comma_float(toConvert):
  105.     toConvert = toConvert.replace(",", ".")
  106.     try:
  107.         return float(toConvert)
  108.     except ValueError:
  109.         return -1
  110.  
  111. #On créer un tableaux de chasseur
  112. chasseurs=[None]*999
  113.  
  114. #Pour tout les id dans les data
  115. for id in sample_data.id_villageois:
  116.     #on vérifie qu'il y a bien un chasseur d'enregistrer et pas une erreur NaN
  117.     if type(id) == float and not math.isnan(id):
  118.         #on converti l'id en int
  119.         id=int(id)
  120.         #on créer un tableaux vide pour les sessions de chasse
  121.         sessions_chasses=[]
  122.         #on récupére toute les lignes du même villageois
  123.         lignes = sample_data[sample_data.id_villageois==id]
  124.         #Ligne chasse est un tableaux contenant une ligne de data donc on a [0]=id_villageois, [1] = HeureDepart, [2] = DepartDecimal etc etc
  125.         for ligne_chasse in lignes.values:
  126.             idChasse = int(ligne_chasse[5]) #On récupére l'identifiant de la chasse
  127.             depart = convert_comma_float(ligne_chasse[2]) #On converti l'heure du depart en vrai décimal (avec un point a la place de la virgule)
  128.             retour = convert_comma_float(ligne_chasse[4]) #On converti l'heure du retour en vrai décimal (avec un point a la place de la virgule)
  129.             k = session_chasse(idChasse, depart, retour) #On créer une nouvelle session_chasse avec les infos du dessus
  130.             sessions_chasses.append(k) #on ajoute la session_chasse au tableau des sessions de chasses
  131.         #Une fois toute les sessions converti en object(class(session_chasse)) et mise dans un tableau
  132.         #On créer un object chasseur avec l'id du villagoies et le tableaux des sessions de chasse
  133.         chasseurs[id]= chasseur(id, sessions_chasses)
  134.  
  135.  
  136. # In[ ]:
  137. #for chasse in chasseurs[4].session_de_chasses:
  138.     #print(chasse.depart + chasse.duree)
  139.  
  140. #print(horaires)
  141. '''
  142. print(chasseurs[4].session_de_chasses[0].depart)
  143. print(chasseurs[4].session_de_chasses[0].depart+chasseurs[4].session_de_chasses[0].duree)
  144. print(chasseurs[4].session_de_chasses[0].testHoraire(0))
  145. '''
  146.  
  147. #Pour tout les horaire
  148.  
  149.  
  150. for  x in range(len(horaires)):
  151.     #On créer une variable text contenant l'horaire + un séparateur
  152.     if (horaires[x] < 10):
  153.         text = "<tr><th>0" + str(horaires[x]) + " </th> "
  154.     else:
  155.         text = "<tr><th>"+str(horaires[x]) + " </th> "
  156.     #Pour tout les chasseurs
  157.     for y in range(len(chasseurs)):
  158.         #On vérifie quil y a bien un chasseur
  159.         if (chasseurs[y] is not None):
  160.             #On récupére son planning
  161.             points = chasseurs[y].doPlanning()[x]
  162.             if (points < 10):
  163.                 points =  "0" +str(points)
  164.            # ratio = points/len(chasseurs[y].session_de_chasses)
  165.             #ratioArrondi = round(ratio*100)/100
  166.             #on ajoute ses points avec un delimiter au text
  167.             text += "<td>" + str(points) + "</td>"
  168.     #On print le text
  169.     print(text)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement