Gérer les Dates avec Pandas pour l'Analyse des Ventes

La gestion des dates
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Maîtrisez Python : Analyse et visualisations des données
Revoir le teaser Je m'abonne
3,5
Transcription

Description Programme Avis
3,5

Les objectifs de cette vidéo sont :

  • Comprendre l'importance de convertir les dates en objets datetime.
  • Apprendre à utiliser la fonction parseDate de Pandas.
  • Extraire des informations temporelles utiles pour l'analyse.
  • Gérer les fuseaux horaires dans les jeux de données internationaux.

Découvrez comment gérer efficacement les dates avec Pandas, crucial pour l'analyse des ventes, et comment extraire des informations temporelles précieuses pour repérer la saisonnalité et d'autres tendances.

La gestion des dates avec Pandas est essentielle pour tout analyste de données, en particulier pour l'analyse des ventes. Convertir les champs de date en objets datetime permet de comparer les dates, d'extraire des informations comme l'année, le mois ou le jour de la semaine, et d'analyser la saisonnalité.

Dans cette leçon, vous apprendrez à utiliser la fonction parseDate pour convertir automatiquement les dates lors du chargement d'un DataFrame. Vous comprendrez comment créer de nouvelles colonnes telles que OrderYear, OrderMonth et OrderDay pour segmenter les ventes selon différentes périodes.

Nous aborderons également les défis liés aux fuseaux horaires et à leur impact sur l'analyse des ventes, avec un focus particulier sur les États-Unis. Vous verrez comment utiliser tzlocalize pour gérer correctement les fuseaux horaires et éviter les erreurs d'analyse, particulièrement lors d'événements tels que le Black Friday.

Voir plus
Questions réponses
Pourquoi est-il important de convertir les dates en objets datetime dans Pandas?
Il est important de convertir les dates en objets datetime pour pouvoir comparer les dates, extraire des informations temporelles précieuses et améliorer l'analyse des ventes, notamment pour repérer la saisonnalité des achats.
Quels sont les défis liés aux fuseaux horaires lors de l'analyse des ventes?
Les défis incluent la gestion des différences de temps entre régions, la considération des événements spéciaux et des pics de vente, et la difficulté de synchroniser ces événements sans une information précise sur le fuseau horaire.
Comment Pandas gère-t-il les changements d'heure au sein d'un même fuseau horaire?
Pandas gère les changements d'heure en utilisant tzlocalize, permettant de définir le fuseau horaire et de déléguer à Pandas la gestion des conflits liés aux changements d'heure.
La gestion des dates avec Pandas et dans l'analyse des données en général, c'est un enjeu important pour les data analysts, plus encore lorsqu'il s'agit de faire l'analyse des ventes, parce qu'il s'agira cette fois de vérifier s'il n'y a pas de saisonnalité dans les achats effectués par les clients. Et ça c'est une information qui est très utile pour les équipes marketing. A ce titre, il est donc impératif de convertir tous les champs date en tant qu'objet datetime au sens Python du terme, plutôt que de les considérer comme des chaînes de caractère. Cette opération va nous permettre ensuite de pouvoir comparer les dates entre elles et d'en extraire de précieuses informations. Alors la conversion des variables au format date, on pourrait utiliser la fonction asType telle que nous l'avions vue précédemment, mais je préfère vous montrer une autre façon de faire et c'est celle qui s'appliquera à partir de cette vidéo. Lors d'un chargement d'un DataFrame, on fait indiquer à Pandas de convertir automatiquement certaines des variables qu'il va trouver dans le jeu de données en tant que datetime à l'aide du paramètre parseDate. Donc le paramètre parseDate, parseUnderscoreDate, va prendre en argument une liste de ces variables et elles seront automatiquement chargées. Et donc à partir de maintenant et jusqu'à la fin de ce cours, de cette formation, nous aurons à chaque fois cette instruction avec le parseDate pour les deux colonnes qui correspondent à des dates dans notre jeu de données, OrderDate et ChipDate. Et on voit la différence, maintenant elles sont considérées comme des datetimes. Alors maintenant que nous avons des objets datetime, qu'est-ce que ça nous apporte finalement ? Et bien à partir de ces variables qui sont maintenant des objets de type datetime, nous allons pouvoir extraire des informations suivantes. L'année, le mois, le jour de la semaine, quand c'est disponible l'heure, la minute, la seconde. On peut même aller jusqu'à le numéro de la semaine. Est-ce qu'on est au premier trimestre, au second trimestre ? Toutes ces informations-là, qu'il n'est pas possible d'obtenir à l'aide d'une chaîne de caractères qui serait formatée comme une date, vont nous être très utiles pour évaluer la saisonnalité, mais aussi pour faire des agrégats, par exemple pour pouvoir obtenir les ventes par année, le profit par mois, le profit par semaine. Ce genre d'informations très utiles. Pour cela, on va utiliser l'argument d'été, suivi de l'argument nécessaire. Vous pourrez cliquer sur le lien et vous aurez accès à tous les arguments disponibles. Et il y en a beaucoup. Ici, on va se concentrer sur l'année, le mois et le jour de la semaine. Sachant qu'attention, le jour de la semaine, ça ne sera pas lundi, mardi, mercredi, jeudi, vendredi. Ça va être 0, 1, 2, 3, 4, 5, 6. 0 étant le lundi, 6 étant le dimanche, si je ne me trompe pas. Alors, ce qu'il est encore plus utile de faire ici, ça va être de créer de nouvelles variables, de nouvelles colonnes, un petit peu comme si on ajoutait finalement une clé à ce DataFrame, à ce dictionnaire. Et on va rajouter donc une colonne OrderYear pour l'année, une colonne OrderMonth pour le mois et une colonne OrderDay pour le jour de la semaine. Alors, ça nous permet d'obtenir très rapidement des informations assez utiles, à savoir les années pour lesquelles les ventes ont été considérées dans ce jeu de données. Ce sont des données de 2015 à 2018. On va avoir le OrderMonth. Et là, même si ce n'est pas très ordonné, on voit que nous avons les 12 mois de l'année qui sont considérés, donc de 1 à 12. Et pour les jours de la semaine, il y a eu des ventes, même le dimanche, puisqu'on va de 0 à 6. Alors, un deuxième intérêt d'avoir accès à ces nouvelles variables, c'est la possibilité de les regrouper et de pouvoir mieux apprécier les saisonnalités, comme je le disais. Un sujet que j'aimerais aborder, qui pourra vous arriver si vous travaillez dans un contexte international ou aux Etats-Unis, puisque les Etats-Unis, de ce point de vue-là, c'est l'enfer, c'est le problème avec les dates. Et plus précisément, le problème avec les fuseaux horaires. Comme vous le savez peut-être déjà, l'heure que nous avons ici, au moment où je tourne, n'est peut-être pas la même heure que celle que vous avez chez vous, notamment si vous habitez dans un pays différent de la France. Il y a des fuseaux horaires, un certain nombre, ce sont des zones géographiques qui ne sont pas liées, on va dire, à des pays précisément, mais des zones pour lesquelles l'heure est fixe dans toute la zone considérée. Et donc, il y a un peu plus d'une vingtaine de fuseaux horaires, et donc, à l'instant T maintenant, il y a plus d'une vingtaine d'heures possibles qui sont justes, en considérant, évidemment, le fuseau horaire. Alors, le problème, souvent, c'est que vous allez récupérer dans vos jeux de données une heure, mais aucune information sur le fuseau horaire considéré. Pour l'analyse des ventes, ça peut poser un problème. Pourquoi ? Parce qu'il va y avoir des jours, lorsque l'on vend des produits, qui vont avoir un impact très particulier, notamment le Black Friday, il me semble qu'il y a aussi le Black Monday, ou ce genre d'événements-là, des fêtes particulières, qui font qu'à ce moment-là, il va y avoir une grosse augmentation des ventes. La rentrée scolaire, par exemple, aussi. Le problème de ça, c'est que l'heure de démarrage de cet événement, dans le monde, il n'est pas tout à fait au même moment. Et quand vous allez vouloir considérer, à l'échelle, par exemple, des États-Unis, analyser le Black Friday, si vous n'avez pas cette notion de fuseau horaire qui est inscrite dans vos données, vous allez vous mélanger, puisque vous n'allez peut-être pas prendre des ventes qui devraient être mises dans des ventes au Black Friday, puisqu'elles seront peut-être dans le jour précédent, ou peut-être qu'elles seront effectivement dans le bon jour, mais que vous ne les aurez pas comptées. Alors, pour un pays qui a un seul fuseau horaire, typiquement la France, on est tranquille. Quand je parle de la France métropole, bien sûr. Parce qu'au final, on a juste à appliquer un fuseau horaire, à le décrire, et toutes nos dates seront justes. Par contre, pour les États-Unis, si cette gestion des dates et de fuseau horaire n'est pas faite, il va falloir essayer d'introspecter, de deviner à quel fuseau horaire correspond cette date. Et ça, ce n'est pas si simple que ça en a l'air. Alors, pour changer le fuseau horaire, ou en tout cas pour le définir, on utilisera la fonction tzlocalize, pour timezone localized. Le premier paramètre, c'est le nom du fuseau horaire. Le lien est cliquable, et donc vous aurez accès, en fonction d'une zone géographique définie, le nom du fuseau horaire correspondant. Le deuxième paramètre, il va déléguer la responsabilité à Panda de choisir quelle date appliquer en cas de conflit. Typiquement, vous savez que même dans le même fuseau horaire, on a des changements d'heure. En France, on a un changement d'heure. En Europe, il y a peut-être d'autres pays qui ont des changements d'heure. C'est quelque chose qui est peut-être voué à disparaître, mais c'est toujours d'actualité. Et donc, au-delà même du fuseau horaire, il y a aussi cette notion de changement d'heure qui peut avoir un impact. Oui, la gestion des dates est très compliquée, nous sommes d'accord. Alors, sachant que vous avez accès aux régions des Etats-Unis, est-ce qu'il peut être acceptable de faire une approximation pour ajouter cette information ? Et moi, c'est la modification que je vous propose d'effectuer. C'est en vous basant sur la région géographique, d'appliquer une timezone particulière. Et de fait, les dates ne seront pas parfaitement justes parce qu'il y a six fuseaux horaires en reconnaissance aux Etats-Unis et ici, on n'en applique que quatre. Mais elles seront certainement plus justes que le fuseau horaire d'origine. Alors, une fois que vous avez fait ça, qu'est-ce qu'on peut faire de ces informations alors qu'elles sont justes, qu'on a accès au mois, à l'année, au jour, potentiellement à l'heure, à la minute ? Eh bien, on va pouvoir constituer de nouveaux agrégats pour pouvoir apprécier, évaluer la saisonnalité de nos données, tout simplement. Typiquement, on peut répondre maintenant à la question quel est le chiffre d'affaires réalisé par an ? Ça, on peut le faire. On ne pouvait pas le faire avant, on peut le faire maintenant. On va regrouper la colonne Sales et la colonne Order Year par Order Year. On applique une agrégation de type Somme et nous avons donc du coup maintenant, alors là, ça tombe bien, c'est aligné, le chiffre d'affaires réalisé par an sur 2015, 2016, 2017, 2018. On voit qu'en 2016, il était inférieur à 2015 et qu'ensuite, en 2007 et 2018, ça a agrandi. On peut aussi apprécier la saisonnalité sur une échelle plus réduite pour apprécier peut-être les pics d'achat sur les mois. On sait dans les ventes qu'il y a des périodes de fêtes, il y a des périodes particulières qui font que sur certains mois, il y aura plus de ventes prévisibles que d'autres. Alors, on fait la même chose. Les profits, cette fois, par mois de l'année. Sachant que les mois, le 1, c'est janvier, le 2, c'est février, le 3, c'est mars, etc. Ici, j'ai fait le choix de traiter mes valeurs et de les réordonner dans l'ordre décroissant de sorte à avoir directement en visuel les mois qui sont les plus rentables de l'année. Les mois qui sont les plus rentables de l'année, c'est le mois de décembre, le mois de septembre, le mois de novembre et le mois d'octobre.
4 commentaires
3,5
4 votes
5
4
3
2
1
elephorm-1464076@addviseo.com
Il y a 3 months
Commentaire
Bonne formation mais vraiment dommage de ne pas avoir au moins les liens des supports de cours.
nicolasmichaux1
Il y a 1 year
Commentaire
Bonnne formation mais aucun support de cours
lebris.gilles76
Il y a 2 years
Commentaire
Très bien , mais il manque les supports de cours
antoinem
Il y a 2 years
Commentaire
Bien mais il manque les supports de cours
Nos dernières formations Python
  • Pack 5 formations
    Pack Python : Des bases aux techniques avancées
    Découvrir
    Réputé pour être le langage de programmation le plus populaire au monde, Python est très plébiscité pour ses différentes utilisations.  A travers ce pack de 5 formations, vous apprenez les fondamentaux de la programmation Python, vous maîtrisez les techniques avancées et vous découvrez comment utiliser Python pour le web et pour l’analyse et la visualisation des données. Apprendre à programmer en Python : Apprendre les fondamentaux du langage de programmation Python. Apprendre Python : Qualité de code et maintenance : Maîtriser Python avec une qualité de code et de maintenance optimales. Maîtriser Python : Techniques avancées : Formez-vous aux différentes fonctionnalités avancées de python. Apprendre le web avec Python/ Django : Découvrez la programmation Web : Apprendre les principes fondamentaux de la programmation Web Maîtriser Python : Analyse et visualisations des données : Apprendre à utiliser Python pour l’analyse et la visualisation des données
    22h52 154 leçons
  • Apprendre Python   - Qualité de code et maintenance
    Découvrir
    Maîtriser Python avec une qualité de code et de maintenance optimales
    3h09 23 leçons
  • Maîtriser Python  - Techniques avancées
    Découvrir
  • Apprendre à programmer en Python
    Découvrir
    Apprendre les fondamentaux du langage de programmation Python
    6h33 60 leçons 4,75 / 5
  • Apprendre le Web avec Python/Django - Découvrez la programmation web
    Découvrir
    Apprendre les principes fondamentaux de la programmation Web
    4h38 32 leçons 3,50 / 5