Utiliser NumPy pour effectuer des calculs de date et d’heure

NumPy pour effectuer des calculs de date et d'heure


Using-NumPy-to-Perform-Date-and-Time-Calculations Utiliser NumPy pour effectuer des calculs de date et d'heure NEWS
Image par auteur | Toile

Les dates et les heures sont essentielles dans de nombreuses tâches d’analyse de données, qu’il s’agisse de suivre des transactions financières ou de surveiller des données de capteurs en temps réel. Cependant, les calculs de date et d’heure peuvent souvent sembler complexes.

Heureusement, NumPy simplifie ces tâches. Ses fonctionnalités robustes de date et d’heure offrent une suite de méthodes qui rendent le processus beaucoup plus facile.

Par exemple, NumPy permet de créer facilement des tableaux de dates, d’effectuer des calculs sur les dates et les heures, et de convertir entre différentes unités de temps avec seulement quelques lignes de code. Vous avez besoin de trouver la différence entre deux dates ? NumPy le fait sans effort. Vous souhaitez rééchantillonner vos données de séries chronologiques à une fréquence différente ? NumPy est là pour vous. Cette commodité et cette puissance font de NumPy un outil inestimable pour quiconque travaille avec des calculs de date et d’heure, transformant ce qui était autrefois un défi complexe en une tâche simple.

Dans cet article, nous vous guiderons pour réaliser des calculs de date et d’heure à l’aide de NumPy. Nous couvrirons ce qu’est datetime et comment il est représenté, où la date et l’heure sont couramment utilisées, les difficultés et problèmes courants liés à son utilisation, et les meilleures pratiques.

Qu’est-ce que DateTime ?

DateTime fait référence à la représentation des dates et des heures dans un format unifié. Il comprend des dates et des heures de calendrier spécifiques, souvent en fractions de seconde. Cette combinaison est cruciale pour enregistrer et gérer avec précision les données temporelles, telles que les horodatages dans les journaux, la planification d’événements, et la réalisation d’analyses temporelles.

En programmation générale et analyse de données, DateTime est généralement représenté par des types de données ou des objets spécialisés qui fournissent une manière structurée de gérer les dates et les heures. Ces objets permettent une manipulation, une comparaison et des opérations arithmétiques faciles impliquant des dates et des heures.

NumPy et d’autres bibliothèques comme pandas offrent un support robuste pour les opérations DateTime, rendant le travail avec des données temporelles dans différents formats et la réalisation de calculs complexes faciles et précis.

Dans NumPy, la gestion de la date et de l’heure tourne principalement autour du type de données datetime64 et des fonctions associées. Vous vous demandez peut-être pourquoi le type de données est appelé datetime64. C’est parce que datetime est déjà pris par la bibliothèque standard Python.

Voici un aperçu de son fonctionnement :

Type de données datetime64

  • Représentation: Le type de données datetime64 de NumPy représente les dates et les heures sous forme d’entiers de 64 bits, offrant un stockage et une manipulation efficaces des données temporelles.
  • Format: Les dates et heures en format datetime64 sont spécifiées avec une chaîne qui indique la précision souhaitée, telle que YYYY-MM-DD pour les dates ou YYYY-MM-DD HH:mm:ss pour les horodatages jusqu’à quelques secondes.

Par exemple:

import numpy as np

# Creating a datetime64 array
dates = np.array(['2024-07-15', '2024-07-16', '2024-07-17'], dtype="datetime64")

# Performing arithmetic operations
next_day = dates + np.timedelta64(1, 'D')

print("Original Dates:", dates)
print("Next Day:", next_day)

Caractéristiques de datetime64 dans NumPy

Le type de données datetime64 de NumPy offre des fonctionnalités robustes pour simplifier plusieurs opérations. De la gestion flexible de la résolution aux puissantes capacités arithmétiques, datetime64 rend le travail avec des données temporelles simple et efficace.

  1. Flexibilité de résolution: datetime64 prend en charge diverses résolutions allant des nanosecondes aux années. Par exemple, ns (nanosecondes), us (microsecondes), ms (millisecondes), s (secondes), m (minutes), h (heures), D (jours), W (semaines), M (mois), Y (années).
  2. np.datetime64('2024-07-15T12:00', 'm')  # Minute resolution
    np.datetime64('2024-07-15', 'D') # Day resolution

  3. Opérations arithmétiques: Effectuer une arithmétique directe sur des objets datetime64, tels que l’ajout ou la soustraction d’unités de temps, par exemple l’ajout de jours à une date.
  4. date = np.datetime64('2024-07-15')
    next_week = date + np.timedelta64(7, 'D')

  5. Indexation et découpage: Utiliser les techniques standard d’indexation et de découpage NumPy sur des tableaux datetime64. Par exemple, extraire une plage de dates.
  6. dates = np.array(['2024-07-15', '2024-07-16', '2024-07-17'], dtype="datetime64")
    subset = dates[1:3]

  7. Opérations de comparaison: Comparer des objets datetime64 pour déterminer l’ordre chronologique. Exemple : Vérifier si une date est antérieure à une autre.
  8. date1 = np.datetime64('2024-07-15')
    date2 = np.datetime64('2024-07-16')
    is_before = date1 < date2 # True

  9. Fonctions de conversion: Convertir entre datetime64 et d’autres représentations de date/heure. Exemple : Conversion d’un objet datetime64 à une chaîne.
  10. date = np.datetime64('2024-07-15')
    date_str = date.astype('str')

Où utilise-t-on généralement la date et l’heure ?

La date et l’heure sont utilisées dans plusieurs secteurs, comme la finance pour suivre les cours des actions, analyser les tendances du marché, évaluer les performances financières au fil du temps, calculer les rendements, évaluer la volatilité et identifier les modèles dans les données de séries chronologiques.

Dans les soins de santé, elles servent à gérer les dossiers des patients avec des données horodatées concernant les antécédents médicaux, les traitements et les calendriers de traitement.

Scénario : Analyser les données de ventes du commerce électronique

Imaginez que vous êtes un analyste de données travaillant pour une entreprise de commerce électronique. Vous disposez d’un ensemble de données contenant des transactions de vente avec des horodatages et vous devez analyser les modèles de ventes au cours de l’année écoulée. Voici comment vous pouvez tirer parti du type de données datetime64 dans NumPy :

# Loading and Converting Data
import numpy as np
import matplotlib.pyplot as plt

# Sample data: timestamps of sales transactions
sales_data = np.array(['2023-07-01T12:34:56', '2023-07-02T15:45:30', '2023-07-03T09:12:10'], dtype="datetime64")

# Extracting Specific Time Periods
# Extracting sales data for July 2023
july_sales = sales_data[(sales_data >= np.datetime64('2023-07-01')) & (sales_data < np.datetime64('2023-08-01'))]

# Calculating Daily Sales Counts
# Converting timestamps to dates
sales_dates = july_sales.astype('datetime64[D]')

# Counting sales per day
unique_dates, sales_counts = np.unique(sales_dates, return_counts=True)

# Analyzing Sales Trends
plt.plot(unique_dates, sales_counts, marker='o')
plt.xlabel('Date')
plt.ylabel('Number of Sales')
plt.title('Daily Sales Counts for July 2023')
plt.xticks(rotation=45) # Rotates x-axis labels for better readability
plt.tight_layout() # Adjusts layout to prevent clipping of labels
plt.show()

Dans ce scénario, datetime64 vous permet de manipuler et d’analyser facilement les données de vente, fournissant ainsi un aperçu des modèles de ventes quotidiens.

Difficultés courantes lors de l’utilisation de la date et de l’heure

Bien que le type de données datetime64 de NumPy soit un outil puissant pour gérer les dates et les heures, il n’est pas sans défis. De l’analyse de différents formats de date à la gestion des fuseaux horaires, les développeurs se heurtent souvent à plusieurs obstacles qui peuvent compliquer leurs tâches d’analyse de données. Cette section met en évidence certains de ces problèmes typiques.

  1. Analyse et conversion de formats: La gestion de différents formats de date et d’heure peut s’avérer difficile, en particulier lorsque vous travaillez avec des données provenant de plusieurs sources.
  2. Gestion des fuseaux horaires: datetime64 dans NumPy ne prend pas en charge nativement les fuseaux horaires.
  3. Incohérences de résolution: Différentes parties d’un ensemble de données peuvent avoir des horodatages avec des résolutions différentes (par exemple, certaines en jours, d’autres en secondes).

Comment effectuer des calculs de date et d’heure

Explorons des exemples de calculs de date et d’heure dans NumPy, allant des opérations de base aux scénarios plus avancés, pour vous aider à exploiter tout le potentiel de datetime64 pour vos besoins d’analyse de données.

Ajouter des jours à une date

Le but ici est de montrer comment ajouter un nombre spécifique de jours (5 jours dans ce cas) à une date donnée (2024-07-15)

import numpy as np

# Define a date
start_date = np.datetime64('2024-07-15')

# Add 5 days to the date
end_date = start_date + np.timedelta64(5, 'D')

print("Start Date:", start_date)
print("End Date after adding 5 days:", end_date)

Sortie:

Date de début : 2024-07-15
Date de fin après avoir ajouté 5 jours : 2024-07-20

Explication:

  • Nous définissons la start_date en utilisant np.datetime64.
  • En utilisant np.timedelta64, on ajoute 5 jours (5, D) à la start_date pour obtenir la end_date.
  • Enfin, nous imprimons les deux start_date et end_date pour observer le résultat de l’addition.

Calculer le décalage horaire entre deux dates

Calculez le décalage horaire en heures entre deux dates spécifiques (2024-07-15T12:00 et 2024-07-17T10:30)

import numpy as np

# Define two dates
date1 = np.datetime64('2024-07-15T12:00')
date2 = np.datetime64('2024-07-17T10:30')

# Calculate the time difference in hours
time_diff = (date2 - date1) / np.timedelta64(1, 'h')

print("Date 1:", date1)
print("Date 2:", date2)
print("Time difference in hours:", time_diff)

Sortie:

Date 1 : 2024-07-15T12:00
Date 2 : 2024-07-17T10:30
Décalage horaire en heures : 46,5

Explication:

  • Définir date1 et date2 en utilisant np.datetime64 avec des horodatages spécifiques.
  • Calculer time_diff en soustrayant date1 de date2 et en divisant par np.timedelta64(1, 'h') pour convertir la différence en heures.
  • Imprimez les dates originales et le décalage horaire calculé en heures.

Gestion des fuseaux horaires et des jours ouvrables

Calculez le nombre de jours ouvrés entre deux dates, hors week-end et jours fériés.

Source