Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment réparer dans Pandas : horodatage en nanosecondes hors limites



Une erreur que vous pouvez rencontrer lors de l’utilisation de pandas est :

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2300-01-10 00:00:00

Cette erreur se produit lorsque vous tentez de créer un horodatage situé en dehors de la plage suivante :

import pandas as pd

#display minimum timestamp allowed
print(pd.Timestamp.min)

1677-09-21 00:12:43.145224193

#display maximum timestamp allowed 
print(pd.Timestamp.max)

2262-04-11 23:47:16.854775807

L’exemple suivant montre comment corriger cette erreur dans la pratique.

Comment reproduire l’erreur

Supposons que nous essayions de créer une plage de dates dans pandas contenant les trois dates suivantes :

  • 1/1/2020
  • 1/1/2150
  • 1/1/2300

Nous pouvons utiliser la fonction date_range() pour tenter de créer cette plage de dates :

import pandas as pd

#attempt to create date range
some_dates = pd.date_range(start='1/1/2000', end='1/1/2300', periods=3)

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2300-01-10 00:00:00

Nous recevons l’erreur OutOfBoundsDatetime car l’horodatage 1/1/2300 est supérieur à l’horodatage maximal en nanosecondes autorisé par les pandas.

Même si vous ne souhaitez pas stocker l’horodatage en utilisant les nanosecondes comme unité, les pandas le feront automatiquement.

Comment réparer l’erreur

Le moyen le plus simple de contourner cette erreur consiste à utiliser l’argument error = ‘coerce’ , qui contraint tous les horodatages en dehors de la plage minimale ou maximale aux valeurs NaT.

Par exemple, nous pouvons utiliser le code suivant pour créer une plage de dates et forcer automatiquement tous les horodatages en dehors de la plage autorisée aux valeurs NaT :

import pandas as pd

#create date range
some_dates = ['1/1/2000', '1/1/2150', '1/1/2300']

#convert date range to datetime and automatically coerce errors
some_dates = pd.to_datetime(some_dates, errors = 'coerce')

#show datetimes
print(some_dates)

DatetimeIndex(['2000-01-01', '2150-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)

Le résultat est une plage de dates avec trois valeurs datetime et la dernière datetime est NaT car elle a dépassé la valeur maximale autorisée par les pandas.

Notez que nous ne recevons aucune erreur cette fois lors de la création de la plage de dates.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :

Comment réparer : les colonnes se chevauchent mais aucun suffixe n’est spécifié
Comment réparer : l’objet ‘numpy.ndarray’ n’a pas d’attribut ‘append’
Comment réparer : si vous utilisez toutes les valeurs scalaires, vous devez transmettre un index

Ajouter un commentaire

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