Les sources ouvertes contiennent une énorme quantité d'informations utiles. Les collecter, les stocker et les analyser correctement vous aideront à trouver les meilleures opportunités commerciales.
Un groupe de jeunes entrepreneurs a envisagé la possibilité d'ouvrir son propre studio photo à Moscou. Ils avaient besoin de savoir:
- Quel est l'état général du marché des studios photo: en croissance, stable ou en baisse?
- quelle est la saisonnalité du marché?
- combien peuvent-ils gagner?
- où est-il préférable d'ouvrir les salles?
- combien investir dans le projet?
- Quelle est la force de la concurrence sur le marché?
Un analyseur simple , une base de données et les analyses fournies dans cet article les ont aidés à répondre à ces questions et à bien d'autres .
Dans le premier article, nous avons examiné l'analyse du site d' agrégation de studio photo ugoloc.ru et téléchargé des informations générales sur les studios photo, les salles et les données sur la réservation de chambres.
Dans le deuxième article, nous avons examiné l'écriture des données reçues dans la base de données et la lecture des données de la base de données, ainsi que la configuration de l'opération d'analyse en fonction des informations de la base de données.
Dans cet article, nous allons procéder à une analyse simple des données collectées.
Vous pouvez trouver un projet fini avec des exemples de tables de la base de données, des tables intermédiaires, des graphiques, des commentaires supplémentaires sur ma page sur github .
Quelles directions d'analyse nous utiliserons
- déterminer la dynamique d'ouverture des studios photo;
- calculer la rentabilité des studios photo en fonction du mois d'ouverture;
- déterminer la saisonnalité de l'entreprise;
- calculer le revenu moyen par salle, ainsi que le nombre optimal de salles du studio photo;
- enquêter sur la dépendance de la rentabilité à l'emplacement du studio photo;
- connaître le nombre de salles des studios concurrents;
- calculer l'influence d'autres paramètres sur le revenu, tels que la hauteur du plafond, la superficie du hall, les prix de réservation;
- envisager d’autres pistes d’analyse.
Déchargement des données de la base de données
Pour décharger, procédez comme suit:
établir une connexion avec la base
directory = './/'
conn = sqlite3.connect(directory + 'photostudios_moscow1.sqlite')
cur = conn.cursor()
téléchargement de données par studio
studios = db_to_studios(conn)
studios
à travers les couloirs
halls = db_to_halls(conn)
halls
sur réservation
booking = db_to_booking(conn)
booking
nous quittons les studios avec des dates d'ouverture et excluons les vestiaires de la liste des salles
studios = studios[[x.year > 0 for x in studios['established_date']]]
halls = halls[halls['is_hall'] == 1]
Dynamique d'ouverture des studios photo par année
Construisons un histogramme de fréquence des studios photo ouverts pour différentes années. Pour ce faire, nous calculons le nombre de périodes (années) et construisons un histogramme.
tracer un histogramme
num_bins = np.max(studios['established_date']).year - np.min(studios['established_date']).year + 1
plt.hist([x.year for x in studios['established_date']], num_bins)
plt.show()
Sur l'histogramme, on constate une nette croissance des nouveaux studios photo d'année en année. Ce modèle nous renseigne non pas sur la croissance réelle du marché 2 fois par an, mais plutôt sur la croissance de l'agrégateur lui-même.
Ce fait nous informe de la nécessité de diviser les studios en 2 catégories: inscrits sur l'agrégateur lors de l'ouverture d'un studio photo ("nouveau") et après une longue période ("ancien"). Ce sera notre prochaine tâche.
Identifier de nouveaux studios photo
Quel studio photo est nouveau? Celui qui vient d'être promu et qui gagne des clients. Une analyse visuelle des calendriers de réservation dès l'ouverture montre que le studio gagne un flux constant de clients en quelques mois.
Il s'avère que pour distinguer le nouveau studio photo de l'ancien (qui n'a pas immédiatement rejoint l'agrégateur), il faut comparer les revenus du premier semestre à partir du moment de «l'ouverture» avec la même période un an plus tard. Les revenus des nouveaux studios devraient augmenter significativement sur l'année, tandis que les anciens devraient rester à peu près au même niveau.
Tout d'abord, combinons toutes les tables et ne laissons que les heures réservées
# merge all tables
data = (booking
.merge(halls, left_on = 'hall_id', right_on = 'hall_id', how = 'inner')
.merge(studios, left_on ='studio_id', right_on = 'studio_id', how = 'inner')
)
data = data[data['is_working_hour'] == 1]
data['date'] = pd.to_datetime(data['date'])
data
Ensuite, nous calculons les revenus du premier semestre du travail du studio photo
first_month = (data[data['date'] <= [x + datetime.timedelta(days = 15) for x in data['established_date']]]
.loc[:, ['studio_id', 'price', 'duration']]
)
first_month['income'] = first_month['price'] * first_month['duration']
first_month = first_month.groupby('studio_id').agg(np.sum)
first_month
Dans un demi-mois après un an
month_after_year = (data[(data['date'] >= [x + datetime.timedelta(days = 365) for x in data['established_date']])
& (data['date'] <= [x + datetime.timedelta(days = 365 + 15) for x in data['established_date']])
]
.loc[:, ['studio_id', 'price', 'duration']]
)
month_after_year['income'] = month_after_year['price'] * month_after_year['duration']
month_after_year = month_after_year.groupby('studio_id').agg(np.sum)
month_after_year
Nous diviserons les indicateurs dans un an par des indicateurs similaires à l'ouverture
month_diff = (month_after_year.merge(first_month, left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
.merge(halls.groupby('studio_id').count()
, left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
)[['income_x', 'income_y', 'is_hall']]
month_diff['income_diff'] = (month_diff['income_x'] / month_diff['income_y']) ** (1 / month_diff['is_hall'])
month_diff.sort_values('income_diff')
Reçu le taux de croissance du revenu après un an. L'indicateur pour différents studios est distribué de 0,75 à 2,1 sans sauts brusques. Cela suggère que le studio pourrait se connecter à l'agrégateur immédiatement après l'ouverture, après une semaine, un mois, un an, etc.
Pour déterminer les nouveaux studios photo, nous prenons la valeur conditionnelle du taux de croissance des revenus dans la valeur médiane: 1,18. Ceux. si le revenu d'un studio photo pour l'année a augmenté de plus de 18%, alors nous considérerons ce studio photo comme neuf. Il y avait 22 de ces studios.
Dans quel mois est-il préférable d'ouvrir un studio photo?
Nous avons calculé les studios photo qui se sont inscrits sur l'agrégateur peu de temps après l'ouverture. Par conséquent, le jour d'ouverture réel et le jour d'ouverture, selon nos données, seront considérés comme les mêmes pour ces studios.
Pour le calcul, nous prendrons de nouveaux studios photo, calculerons le revenu comme la somme des prix de réservation de toutes les heures réservées, groupe par chambres (en tenant compte du mois de son ouverture), calculons le revenu annuel moyen par mois d'ouverture.
Calcul du revenu moyen de l'année en fonction du mois d'ouverture
new = studios['is_new'].reset_index().merge(data, left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
new = new[new['is_new'] == 1]
new = new[new['date'] <= [x + datetime.timedelta(days = 365) for x in new['established_date']]]
new['est_year'] = [x.year for x in new['established_date']]
new['est_month'] = [x.month for x in new['established_date']]
new['income'] = new['price'] * new['is_booked']
mean_income = (new
.groupby(['hall_id', 'est_year', 'est_month']).agg('sum')['income'].reset_index()
.groupby('est_month').agg('mean')['income']
plt.bar(range(1, 12), mean_income)
plt.show()
)
L'histogramme montre une relation claire:
- les meilleurs mois pour ouvrir un studio photo sont le début de l'année (janvier-avril)
- aussi les bons mois pour ouvrir sont septembre-octobre;
- les pires mois sont de mai à juin.
Il sera intéressant de comparer ces données avec la saisonnalité du marché.
Détermination de la saisonnalité des affaires
Saisonnalité - changement du nombre de commandes en fonction de la période. Analysons la saisonnalité annuelle.
Pour le calcul, prenons les studios ouverts jusqu'en 2018 et voyons leurs réservations pour 2018-2020. Le revenu du studio est défini comme la somme des prix pour les heures réservées. Ensuite, nous calculons le revenu total de tous les studios pour chaque mois de la période sélectionnée.
Calcul de saisonnalité
season = data[(data['open_date'] < '2018-01-01') & (data['date'] > '2018-01-01')]
season['income'] = season['price'] * season['duration']
season['year'] = [x.year for x in season['date']]
season['month'] = [x.month for x in season['date']]
incomes = season.groupby(['year', 'month']).agg(np.sum)['income']
incomes = incomes[incomes.index]
Traçage
incomes = incomes[: -3]
plt.figure(figsize = (20, 10))
plt.plot([str(x[0]) + '-' + str(x[1]) for x in incomes.index], incomes)
plt.xticks(rotation=60)
plt.grid()
plt.show()
Le graphique montre une saisonnalité nettement prononcée: le plus grand nombre de commandes d'octobre à avril et une forte baisse de mai à septembre. La saisonnalité s'inscrit dans la logique de l'entreprise. En été, les gens prennent des photos dans la rue, dans les parcs. En hiver, ce n'est pas possible et vous devez organiser des séances photo à l'intérieur. La saisonnalité y est liée: en été, il y a peu de clients, en hiver, ils sont nombreux. Le pic des commandes est en décembre. Cela est probablement dû à la nouvelle année et au sentiment de vacances que vous souhaitez capturer dans une photo.
Les meilleurs mois pour ouvrir sont liés aux saisons. Il est préférable d'ouvrir un studio pendant la saison ou un mois avant son début. Dans la période de mai à août, le studio ne doit pas être ouvert, car entrer dans la saison morte.
Calcul de rentabilité de la salle
Un indicateur important pour une entreprise en cours d'ouverture est le revenu d'une pièce.
Pour calculer, nous regroupons le revenu par pièce pour chaque mois, excluons 2020 comme année anormale en raison de la quarantaine et examinons la sélection du revenu à l'aide de la fonction .describe ().
Calcul de la rentabilité d'une salle
hall_income = season.groupby(['studio_id','hall_id', 'year', 'month']).agg(sum)['income'].reset_index()
hall_income = hall_income[hall_income['year'] < 2020]
hall_income['income'].describe()
count 648.000000
mean 184299.691358
std 114304.925311
min 0.000000
25% 95575.000000
50% 170350.000000
75% 256575.000000
max 617400.000000
Name: income, dtype: float64
Revenu reçu par salle en roubles.
D'après les données sur les centiles, on peut voir que le revenu de la moitié des salles est de l'ordre de 95 000 roubles. jusqu'à 256 000 roubles. avec une valeur médiane de 170 000 roubles.
À partir des données sur la moyenne et l'écart type, nous voyons que, selon la règle du 1 sigma, les deux tiers des salles rapportent 70 000 roubles. jusqu'à RUB 300,000 à partir du milieu de 184 000 roubles.
Il s'avère que la salle moyenne peut compter sur un revenu de 170 000 à 180 000 roubles. ± 80000 roubles
Un écart aussi important s'explique par l'influence d'autres facteurs, que nous tenterons de déterminer à l'avenir.
Combien de salles y a-t-il à ouvrir dans un studio photo?
Pour calculer, nous allons calculer la rentabilité mensuelle moyenne de chaque salle, calculer la rentabilité moyenne d'une salle par studio photo, calculer le nombre de salles dans un studio photo et regrouper les données par nombre de salles, en calculant la rentabilité moyenne par salle.
Calcul de la rentabilité de la salle en fonction du nombre de salles dans le studio photo
(hall_income
.groupby(['studio_id', 'hall_id']).agg('mean').reset_index()
.groupby('studio_id').agg(['count', 'mean'])['income']
.groupby('count').agg('mean')
)
mean
count
1 134847.916667
2 146531.944444
3 300231.944444
4 222202.604167
Reçu une rentabilité mensuelle moyenne de 1 salle, en fonction du nombre de salles dans le studio photo. Remarquons la régularité: plus il y a de salles, plus il y a de rentabilité. Rentabilité maximale pour les studios de 3 pièces.
Ce phénomène est dû au fait qu'en utilisant une pièce du studio photo, le client peut voir une autre pièce et la réserver immédiatement. Ainsi, une pièce du studio photo en "promeut" d'autres.
Dépendance des revenus à l'emplacement de la salle
L'emplacement de la halle peut grandement affecter la rentabilité: dans le centre, les halles seront plus accessibles aux clients, ce qui signifie que les revenus seront plus élevés. Vérifions l'hypothèse.
Pour le calcul, calculons le revenu mensuel moyen de la salle, regroupons-le selon le critère "métro" et trions par ordre croissant.
Rentabilité de la salle en fonction de la distance du centre
data['income'] = data['price'] * data['duration']
data['year'] = [x.year for x in data['date']]
data['month'] = [x.month for x in data['date']]
(data
.groupby(['hall_id', 'metro', 'year', 'month']).agg('sum')['income'].reset_index()
.groupby(['hall_id', 'metro']).agg('mean')['income'].reset_index()
.groupby('metro').agg('mean')['income'].sort_values()
)[-59:]
Nous avons les données suivantes:
metro
5016.666667
10485.264378
11925.000000
/ 18116.666667
, 19000.000000
21963.333333
30667.051729
31031.250000
37787.500000
/ 39357.142857
44354.375000
45888.888889
46566.666667
48541.666667
. , 49086.503623
55340.659341
, , 55944.444444
. / . 59771.111111
66780.000000
66847.058824
67692.545788
. 70090.341880
. 70337.676411
, 72974.494949
79987.083333
88800.000000
95550.000000
98326.086957
99216.279070
99925.000000
102835.622784
. , . , . \ 104956.521739
111050.684459
111090.000000
111909.090909
116426.892180
117450.000000
118382.236364
122626.500000
, 123258.518519
- 124557.894737
, 126300.000000
129222.916667
135281.642512
, 138945.454545
152246.883469
, 168484.500000
. 169079.381010
. 172618.798439
173777.659900
178254.545455
181041.818182
187283.444198
189140.857975
250975.000000
, , 252685.714286
, 264164.473684
- 277162.791991
556621.746032
Name: income, dtype: float64
Veuillez noter que j'ai laissé les données du métro telles quelles. Pour une image plus précise, ils doivent être mis dans un format commun, par exemple, «Baumanskaya, Elektrozavodskaya», «Station de métro Elektrozavodskaya» et «Electrozavodskaya» doivent être écrits en un seul nom.
D'après les données, nous voyons que dans les zones à biens immobiliers coûteux, comme Maryina Roshcha, Novye Cheryomushki, Krylatskoye, la rentabilité par hall est plus élevée.
Combien de salles les studios concurrents ont-ils
Combien de salles les studios du marché ont-ils? Pour répondre à cette question, attachons une table avec des salles à la table du studio, regroupons-la par studio, comptons le nombre de salles et construisons un histogramme de fréquence.
Calcul du nombre de salles dans les studios
hall_num = studios.merge(halls, left_on='studio_id', right_on='studio_id').groupby('studio_id').agg('count')['is_hall']
plt.hist(hall_num, range(np.min(hall_num), np.max(hall_num)+1))
plt.show()
hall_num.describe()
count 105.000000
mean 2.685714
std 2.292606
min 1.000000
25% 1.000000
50% 2.000000
75% 3.000000
max 13.000000
D'après les données obtenues, nous voyons que la plupart des studios photo (plus de 75%) n'ont pas plus de 3 salles. Sur l'ensemble du marché, en règle générale, les studios ne disposent pas de plus de 5 salles.
Impact d'autres paramètres sur les revenus du studio
Hauteur de plafond
Les photos nécessitent beaucoup de lumière et de grandes fenêtres dans une pièce avec de hauts plafonds procurent beaucoup de lumière naturelle. De plus, plus les plafonds sont hauts, plus la lumière est diffusée et uniforme au sol. Par conséquent, la hauteur du plafond peut affecter la rentabilité du studio photo. Vérifions cette hypothèse.
Calculons le revenu mensuel moyen de chaque salle en gardant des données sur la hauteur du plafond, puis calculons le revenu moyen en fonction de la hauteur du plafond et construisons un graphique.
Revenu de la salle en fonction de la hauteur sous plafond en mètres
halls_sq_ceil = (data
.groupby(['hall_id', 'ceiling', 'square', 'year', 'month']).agg('sum')['income'].reset_index()
.groupby(['hall_id', 'ceiling', 'square']).agg('mean')['income'].reset_index()
)
plt.bar(halls_sq_ceil.groupby('ceiling').agg('mean')['income'].index[:-2],
halls_sq_ceil.groupby('ceiling').agg('mean')['income'][: len(halls_sq_ceil) - 2]
)
plt.show()
Dans les données obtenues, nous voyons que jusqu'à 6 mètres il y a une dépendance directe de la rentabilité du studio photo sur la hauteur du plafond. La hauteur optimale est de 5 à 6 mètres.
Zone du hall
Hypothèse: plus la surface de la salle est grande, plus la salle apporte de revenus.
Nous testons l'hypothèse. Nous utilisons les calculs précédents, calculons la rentabilité moyenne en fonction de la zone, construisons un graphique.
Revenu de la salle en fonction de sa superficie
square = halls_sq_ceil.groupby('square').agg('mean')['income']
plt.bar(square.index[:-3],
square.iloc[: len(square) - 3]
)
plt.show()
Un motif clair est visible sur les graphiques: plus la surface est grande, plus la salle apporte.
Prix de réservation
Hypothèse: il existe un prix de salle optimal que les clients paient pour presque toutes les salles. Les clients sont prêts à payer un prix plus élevé exclusivement pour une qualité élevée.
Pour tester l'hypothèse, considérez d'abord le niveau de prix actuel. Pour ce faire, regroupons le tableau général des réservations par chambre, prix, année, mois et additionnons les revenus. Ensuite, nous allons regrouper par chambre et prix de réservation, en calculant le revenu moyen. Ensuite, regroupons par prix, calculons le revenu moyen. Reçu un revenu mensuel moyen par studio en fonction du prix de réservation fixé
Rentabilité mensuelle moyenne du studio en fonction du prix de réservation de la chambre
price = (data
.groupby(['hall_id', 'price', 'year', 'month']).agg('sum')['income'].reset_index()
.groupby(['hall_id', 'price']).agg('mean')['income'].reset_index()
.groupby('price').agg('mean')['income']
)
Combien de chambres ont un prix spécifique par heure de loyer
plt.figure(figsize = (20, 10))
plt.hist(price.iloc[: len(price) - 5].index)
plt.show()
D'après l'histogramme des fréquences, nous voyons que la plupart des studios fixent un prix de location de 500 à 2000 roubles. Moins de 500 RUB - une rareté. Le prix maximum de location de la salle est de 3500 roubles.
Graphique de la dépendance du revenu mensuel moyen sur le prix de location de la salle
price = price[price > 10000]
plt.figure(figsize = (20, 10))
plt.scatter(price.index, price)
plt.show()
Le graphique montre que jusqu'à 2000 roubles. il existe une relation directe claire: plus le prix de réservation est élevé, plus le studio gagne. À un prix supérieur à 2000 roubles. le revenu de la chambre peut être faible ou élevé. Apparemment, plus de 2000 roubles. les clients sont prêts à ne payer que pour la haute qualité des services fournis: soit pour un emplacement pratique, soit pour un équipement, ou pour une grande surface, ou pour un intérieur de haute qualité, etc.
Autres domaines d'analyse de marché
Analyse d'équipement
Le site ugoloc.ru contient des informations sur l'équipement des studios photo: la présence de fonds colorés, la marque de flashs, etc. L'équipement des studios photo peut également affecter la rentabilité, par conséquent, pour l'exhaustivité de l'analyse, ce facteur doit également être pris en compte.
Tous les studios peuvent n'indiquer la présence d'équipements supplémentaires. Par conséquent, l'évaluation de l'influence de ce facteur peut être inexacte.
Analyse de l'influence de plusieurs paramètres sur le revenu
Les paramètres n'affectent pas le revenu indépendamment les uns des autres. Par exemple, l'espace et le prix de réservation sont liés et affectent ensemble la rentabilité globale d'un studio. Par conséquent, il est plus raisonnable de considérer leur influence ensemble. L'influence de plusieurs paramètres doit être considérée en fonction des spécificités des demandes du client.
Collecte de données améliorée
Les studios photo sur ugoloc.ru représentent moins d'un tiers du marché en termes de quantité. Il n'est pas possible d'estimer la part des studios de ce site agrégateur par revenu et segment de marché. Pour une image plus précise, il vaut la peine de collecter des données à partir d'AppEvent, des calendriers Google et éventuellement des applications de réservation personnalisées.
Dépenses comptables
Vous avez peut-être remarqué qu'il n'y avait souvent pas assez de dépenses pour compléter le tableau. Par exemple, plus la superficie de la salle est grande, plus il y a de revenus. La conclusion est bien sûr bonne, mais à mesure que la zone s'agrandit, le coût de la location d'une salle augmente. Par conséquent, il sera certainement utile de tracer l'augmentation des coûts de location sur le calendrier. Dans le rapport optimal des revenus et des dépenses pour un paramètre spécifique, la rentabilité du projet est cachée.
Le coût de la réparation dépend également de la zone: plus la zone est grande, plus la réparation est coûteuse.
Avec l'augmentation du nombre de halls, les coûts de personnel par hall diminuent, car 1 administrateur peut servir à la fois 1 hall et 3.
Analyse de la distance du métro
Lors de l'évaluation de l'impact de l'emplacement du studio sur le revenu de la salle, un facteur non comptabilisé important est la distance du métro. Vous devrez le déposer manuellement, ou ceux qui connaissent l'API Google peuvent essayer d'automatiser cette action.
Distance des concurrents
Le plus souvent, les studios sont situés à proximité les uns des autres. Il y en a une quarantaine chez Electrozavod rien que pour l'hypothèse que la proximité avec d'autres studios photo augmente la rentabilité. L'endroit (bâtiment / centre d'affaires) peut être familier aux clients et ils peuvent lui faire confiance, ce qui aura un effet positif sur tous les studios photo du site.
La charge de travail des studios photo
Séparément, vous pouvez étudier la charge de travail des studios photo:
- quel pourcentage des heures d'ouverture de la salle sont des réservations;
- comment les réservations sont liées au jour de la semaine (spoiler: elles réservent plus souvent le week-end);
- s'il y a des jours non réservés (pendant lesquels l'administrateur ne peut pas aller travailler);
- quelles heures sont les plus souvent réservées (particulièrement intéressantes à voir en semaine)
- etc.
État des studios photo en basse saison
Les studios ferment plus souvent l'été quand il n'y a pas de commandes. Dans le même temps, le nombre de commandes pour certains studios photo ne baisse pas beaucoup. Quels sont les avantages des studios populaires hors saison? Il s'agit d'un domaine distinct à considérer.
Analyse de rentabilité des concurrents
Ayant des informations sur le coût de location de locaux pour un studio photo et les salaires moyens du personnel, on peut évaluer la situation financière des concurrents. Il se peut que certains studios soient sur le point de fermer. En conséquence, vous pouvez identifier leurs erreurs et essayer de les éviter.
De même, vous pouvez explorer les expériences des studios photo les plus lucratifs et en profiter dans votre studio.
Étapes d'analyse
L'analyse ci-dessus est la première étape pour donner une image approximative du marché. Pour une analyse plus approfondie, le client doit décider quel studio il souhaite ouvrir, quel segment de prix, quel emplacement possible, quel est le prix de location, quel équipement, etc.
Idéal: Identifiez plusieurs options de location. Ensuite, la zone, la hauteur des plafonds, le nombre approximatif de salles, les coûts et les concurrents les plus proches seront déterminés.
Dans ce cas, les analyses peuvent être effectuées de manière plus substantielle et précise.
Résultat
Dans une série d'articles, nous avons examiné comment collecter des données à partir de sources ouvertes, les enregistrer dans une base de données et les analyser. Le résultat du travail a été une compréhension générale du marché des services de studio photo.
Les calculs ci-dessus peuvent être appliqués:
- en créant un business plan dans la partie revenus. Et ce seront des données statistiquement confirmées;
- en évaluant la faisabilité et la rentabilité du projet, en comparant les revenus et les dépenses pour différentes options d'ouverture;
- exploitation de studios photo. De nombreux studios photo sont inactifs sans commandes ou fonctionnent à perte. Alors ils font quelque chose de mal. Les analyses ci-dessus peuvent aider les studios à identifier les causes de leur état.
J'ai aimé faire ce projet.
J'ai décidé de partager mon expérience qui pourrait vous être utile.
Dans quelle mesure les informations contenues dans ces trois articles vous ont-elles été utiles?
Donnez votre avis.
Vous pouvez trouver le projet fini sur ma page github .