objet d’étude : Vortex expérience
préparation à un défi en rapport avec le traitement de données
Récompense si la classe relève le défi : invitation pour toute la classe à une partie de VR en fin d’année à Vortex expérience Bordeaux 🥳
Sous projet 1 : système d’exploitation du jeu
- Ouvrir le fichier BORDEAUX matches.csv
Ce fichier nous donne des informations sur les partie jouées en Janvier à Bordeaux
Une ligne correspond à une partie et le nombre de joueurs constituant l’équipe pour cette partie est donné par la colonne ‘v’.
Il y a deux jeux différents identifiables par la colonne game.
Notre mission : écrire un programme capable de produire un fichier Excel.
Les données doivent êtres agrégées par dates avec le nombre de joueurs le nombre de parties et le détail pour chacun des jeux.
Exemple de résultat attendu :
TESTS : (pas dans l’ordre)
- utiliser les codes de Poudlard, séparer les données avec des virgules (données de BORDEAUX matches, qui ne sont pas séparées)
- trier les données en catégories (comme par exemple Botanique, Moldus, etc) pour clarifier
- changer les ID du type de jeu (apocalypse ou origine) en apocalypse et origine (dictionnaires ?)
- remettre les données triées dans un tableau pour les voir en colonnes (avec les ID en apocalypse et origine)
- organiser par jour (comme dans l’exemple donné dans l’article de blog)
- ajouter une colonne avec 1 à chaque ligne –> lorsqu’on agrège, ajouter les 1 –> nombre de parties
- regrouper nombre de joueurs par jour, de parties et selon ORIGINE et APOCALYPSE + le total de joueurs et d’équipes –> sommes (sum) ?
- calculer le nombre de joueurs par jour
pour voir l’ensemble des tests sur google colab : https://colab.research.google.com/drive/1cATM2irayjCIlEBhPqdap1lUo225GfUx#scrollTo=7jpdpFF7VxQZ
Généralisation de la solution proposée précédemment : https://colab.research.google.com/drive/1vOhcVXVfuMPO9i6XEDKPuB8mdnDPYHoT
Codes trouvés par Lukas et Matthieu : https://colab.research.google.com/drive/1WQ0TJd9VBZ3RxHkYj7RhriLv1JeZyZm-?usp=sharing
Corrigé du sous projet 1 :
import pandas as pd matches= pd.read_csv('BORDEAUX matches.csv',encoding = "ISO-8859-1") def simplifie_date(val): return str(val).split('T')[0] indexNames = matches[matches['startDatetime'].isnull()|matches['game'].isnull()|matches['__v'].isnull()].index matches.drop(indexNames , inplace=True) matches['date']=matches['startDatetime'].apply(simplifie_date) matches['équipe']=1 games = matches.groupby("game") origine= games.get_group('5fc126fcabc9c6bb54078531') apocalypse=games.get_group('604743157d0d2804c8abb4f8') origine_players=origine.groupby(['date'])['__v'].agg('sum').to_frame() origine_equipe=origine.groupby(['date'])['équipe'].agg('sum').to_frame() origine_matches=pd.DataFrame() origine_players_equipe = pd.merge(origine_players,origine_equipe, on='date') dico={'__v':'players_origine','équipe':'equipe_origine'} origine_players_equipe.rename(columns=dico,inplace=True) apocalypse_players=apocalypse.groupby(['date'])['__v'].agg('sum').to_frame() apocalypse_equipe=apocalypse.groupby(['date'])['équipe'].agg('sum').to_frame() apocalypse_matches=pd.DataFrame() apocalypse_players_equipe = pd.merge(apocalypse_players,apocalypse_equipe, on='date') apocalypse_players_equipe.rename(columns={'__v':'players_apocalypse','équipe':'equipe_apocalypse'},inplace=True) origine_apocalypse_jour = pd.merge(origine_players_equipe,apocalypse_players_equipe, on='date') origine_apocalypse_jour['players']=origine_apocalypse_jour['players_origine']+origine_apocalypse_jour['players_apocalypse'] origine_apocalypse_jour['equipes']=origine_apocalypse_jour['equipe_origine']+origine_apocalypse_jour['equipe_apocalypse'] origine_apocalypse_jour.to_excel('1matches_origine_apocalypse_jour.xlsx',sheet_name='bordeaux') import matplotlib.pyplot as plt graphiques=['players_origine','players_apocalypse','players','equipe_origine','equipe_apocalypse','equipes'] ax=origine_apocalypse_jour.plot(y=graphiques,grid=True,kind="bar",figsize=(20,10)) ax.set_ylabel('nombre de joueurs par jour') ax.set_xlabel('date') plt.show()
–>
Sous projet 2 : système de gestion des réservations
La lecture de l’onglet utile du fichier Excel se fait de la manière suivante :
# lecture fichier excel ventes = pd.read_excel('BORDEAUX vortex.xlsx',sheet_name='1 6 Détails des ventes')
Notre mission : écrire un programme capable de produire un fichier Excel.
Les données sont agrégées par dates avec le nombre total de ventes (joueurs ) par jour avec le détail pour trois lots différents.
#création de 3 lots en fonction du 'produit' vendu lot1="lot1: VORTEX APOCALYPSE,VORTEX ORIGINE,VORTEX NOEL 12 17 ANS,\ VORTEX ORIGINE Tarif étudiants,VORTEX APOCALYPSE Tarif Etudiants" lot2="lot2: RESERVATION GIFT CARD VORTEX ORIGINE,RESERVATION GIFT CARD VORTEX APOCALYPSE" lot3="lot3: CARTE CADEAU 1E ENTREE,Vortex Team building,Vortex Team Building Privatisation "
Exemple de résultat attendu :
TESTS :
___________________________________________________________________________________________________
Système d’exploitation du jeu : https://colab.research.google.com/drive/1cATM2irayjCIlEBhPqdap1lUo225GfUx#scrollTo=YGI3EQ10JZCi
« tests » : https://colab.research.google.com/drive/1cATM2irayjCIlEBhPqdap1lUo225GfUx#scrollTo=9seSHIa65OiJ
Une solution : https://colab.research.google.com/drive/1eamP8G2XEVzdmDycmuAmcMyUYC_cIXaO
import pandas as pd matches= pd.read_csv('LYON matches.csv',encoding = "ISO-8859-1") # On filtre les données indexNames = matches[matches['startDatetime'].isnull()|matches['game'].isnull()|matches['__v'].isnull()].index matches.drop(indexNames , inplace=True) # On crée une colonne jeu contenant :ORIGINE ou APOCALYPSE game_dict={'5fc126fcabc9c6bb54078531':('ORIGINE','STRASBOURG'),'610054587f55fe7bf700aa0d':('ORIGINE','BORDEAUX'), '60c2255028f1140564738448':('ORIGINE','LYON','NANTES'),'620276133b92e988f6f8b392':('ORIGINE','LYON'), '5fc126fcabc9c6bb54078531':('ORIGINE','STRASBOURG'),'60c34dc3053c0726808323f5':('ORIGINE','STRASBOURG'), '6202748309b5e34235339277':('ORIGINE','NANTES'), '604743157d0d2804c8abb4f8':('APOCALYPSE','BORDEAUX'),'604743157d0d2804c8abb4f9':('APOCALYPSE','STRASBOURG')} matches['jeu']=matches['game'].apply(lambda t : game_dict[t][0]) #On crée des groupes par jeux b=matches.groupby("jeu") jeux=matches['jeu'].unique().tolist() groupes=[] for val in jeux: groupes.append(b.get_group(val)) print(jeux)
import matplotlib.pyplot as plt if "ORIGINE" in jeux: origine=b.get_group(val) #on simplifie la date date_origine=origine['startDatetime'].to_list() dates_origine=[str(val).split('T')[0] for val in date_origine ] players_origine=origine['__v'].to_list() #on cree une nouvelle table origine_matches=pd.DataFrame() origine_matches['date']=dates_origine origine_matches['players_origine']=players_origine origine_matches['equipe_origine']=1 origine_players=origine_matches.groupby(['date'])['players_origine'].agg('sum').to_frame() origine_equipe=origine_matches.groupby(['date'])['equipe_origine'].agg('sum').to_frame() origine_players_equipe = pd.merge(origine_players,origine_equipe, on='date') #visualisation ax=origine_players_equipe.plot(y=['players_origine','equipe_origine'],grid=True,kind="bar",figsize=(20,10)) ax.set_ylabel('nombre de joueurs par jour') ax.set_xlabel('date') if "APOCALYPSE" in jeux : apocalypse=b.get_group(val) #on simplifie la date date_apocalypse=apocalypse['startDatetime'].to_list() dates_apocalypse=[str(val).split('T')[0] for val in date_apocalypse ] players_apocalypse=apocalypse['__v'].to_list() #on cree une nouvelle table apocalypse_matches=pd.DataFrame() apocalypse_matches['date']=dates_apocalypse apocalypse_matches['players_apocalypse']=players_apocalypse apocalypse_matches['equipe_apocalypse']=1 apocalypse_players=apocalypse_matches.groupby(['date'])['players_apocalypse'].agg('sum').to_frame() apocalypse_equipe=apocalypse_matches.groupby(['date'])['equipe_apocalypse'].agg('sum').to_frame() apocalypse_players_equipe = pd.merge(apocalypse_players,apocalypse_equipe, on='date') #visualisation ax=apocalypse_players_equipe.plot(y=['players_apocalypse','equipe_apocalypse'],grid=True,kind="bar",figsize=(20,10)) ax.set_ylabel('nombre de joueurs par jour') ax.set_xlabel('date') if "APOCALYPSE" in jeux and "ORIGINE" in jeux: origine_apocalypse_jour = pd.merge(origine_players_equipe,apocalypse_players_equipe, on='date') origine_apocalypse_jour['players']=origine_apocalypse_jour['players_origine']+origine_apocalypse_jour['players_apocalypse'] origine_apocalypse_jour['equipes']=origine_apocalypse_jour['equipe_origine']+origine_apocalypse_jour['equipe_apocalypse'] origine_apocalypse_jour # on cree un fichier excel origine_apocalypse_jour.to_excel('origine_apocalypse_jour.xlsx') #on visualise le résultat ax=origine_apocalypse_jour.plot(y=['players','players_origine','players_apocalypse','equipes','equipe_origine','equipe_apocalypse'],grid=True,kind="bar",figsize=(20,10)) ax.set_ylabel('nombre de joueurs par jour') ax.set_xlabel('date')
Aucune réponse