Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # coding: utf-8
- # In[6]:
- import pandas as pd
- import math
- import numpy
- # In[3]:
- from matplotlib import pyplot as plt
- # In[24]:
- sample_data=pd.read_csv('DataPlanning.csv',delimiter=';')
- # In[27]:
- #Ligne 1 on créer un tableau vide d'une taille prédifinit de 999 éléments
- #chasseurs = [None]*999
- # In[51]:
- #Après pour tout les id_villageois dans excel on créer une variable id
- #on vérifié que id est un nombre et pas une erreur NaN
- #on converti l'id en nombre entier car on en a besoin pour les tableaux
- #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
- #for id in sample_data.id_villageois:
- # if type(id) == float and not math.isnan(id):
- # id=int(id)
- # chasseurs[id]=sample_data[sample_data.id_villageois==id]
- # In[35]:
- horaires=[]
- for i in numpy.arange(0, 24, 0.5):
- horaires.append(i)
- # In[72]:
- class session_chasse:
- def __init__(self, idChasse, depart, retour):
- self.idChasse = idChasse
- self.depart = depart
- self.retour = retour
- duree = 0
- if (retour < depart):
- duree=(retour+24)-depart
- else:
- duree=retour-depart
- self.duree=duree
- #On ajoute a l'object session_chasse une fonction pour tester 1 horaire
- def testHoraire(self, horaire):
- #print(self.depart + self.duree)
- if (self.depart < horaire and self.depart + self.duree > horaire):
- return 1
- else:
- if (self.depart + self.retour > 24 and self.retour > horaire):
- return 1
- else:
- return 0
- class chasseur:
- def __init__ (self, id_vlg, session_de_chasses):
- self.id_vlg = id_vlg
- self.session_de_chasses = session_de_chasses
- #On ajoute a l'object chasseur une fonction pour généré un planning
- def doPlanning(self):
- #On créer un tableau de 48 entrée
- planning = [int]*len(horaires)
- #pour toute les tranche horaire
- for h in range(0, len(horaires)):
- sum = 0
- #on fais la somme de chaque session de chasse
- for chasse in self.session_de_chasses:
- sum+=chasse.testHoraire(horaires[h])
- #on ajoute la somme dans le tableau
- planning[h]=sum
- #On renvoit le tableau
- return planning
- #Fonction pour convertire tes heure décimal qui contienne une virgule !!!!!! En programation les nombre a virgules on des "." pas des virgules
- def convert_comma_float(toConvert):
- toConvert = toConvert.replace(",", ".")
- try:
- return float(toConvert)
- except ValueError:
- return -1
- #On créer un tableaux de chasseur
- chasseurs=[None]*999
- #Pour tout les id dans les data
- for id in sample_data.id_villageois:
- #on vérifie qu'il y a bien un chasseur d'enregistrer et pas une erreur NaN
- if type(id) == float and not math.isnan(id):
- #on converti l'id en int
- id=int(id)
- #on créer un tableaux vide pour les sessions de chasse
- sessions_chasses=[]
- #on récupére toute les lignes du même villageois
- lignes = sample_data[sample_data.id_villageois==id]
- #Ligne chasse est un tableaux contenant une ligne de data donc on a [0]=id_villageois, [1] = HeureDepart, [2] = DepartDecimal etc etc
- for ligne_chasse in lignes.values:
- idChasse = int(ligne_chasse[5]) #On récupére l'identifiant de la chasse
- 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)
- 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)
- k = session_chasse(idChasse, depart, retour) #On créer une nouvelle session_chasse avec les infos du dessus
- sessions_chasses.append(k) #on ajoute la session_chasse au tableau des sessions de chasses
- #Une fois toute les sessions converti en object(class(session_chasse)) et mise dans un tableau
- #On créer un object chasseur avec l'id du villagoies et le tableaux des sessions de chasse
- chasseurs[id]= chasseur(id, sessions_chasses)
- # In[ ]:
- #for chasse in chasseurs[4].session_de_chasses:
- #print(chasse.depart + chasse.duree)
- #print(horaires)
- '''
- print(chasseurs[4].session_de_chasses[0].depart)
- print(chasseurs[4].session_de_chasses[0].depart+chasseurs[4].session_de_chasses[0].duree)
- print(chasseurs[4].session_de_chasses[0].testHoraire(0))
- '''
- #Pour tout les horaire
- for x in range(len(horaires)):
- #On créer une variable text contenant l'horaire + un séparateur
- if (horaires[x] < 10):
- text = "<tr><th>0" + str(horaires[x]) + " </th> "
- else:
- text = "<tr><th>"+str(horaires[x]) + " </th> "
- #Pour tout les chasseurs
- for y in range(len(chasseurs)):
- #On vérifie quil y a bien un chasseur
- if (chasseurs[y] is not None):
- #On récupére son planning
- points = chasseurs[y].doPlanning()[x]
- if (points < 10):
- points = "0" +str(points)
- # ratio = points/len(chasseurs[y].session_de_chasses)
- #ratioArrondi = round(ratio*100)/100
- #on ajoute ses points avec un delimiter au text
- text += "<td>" + str(points) + "</td>"
- #On print le text
- print(text)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement