Projet Vortex

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *