Pandas'ta nasıl düzeltilir: nanosaniye cinsinden zaman damgası aralık dışında


Pandaları kullanırken karşılaşabileceğiniz bir hata:

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

Bu hata, aşağıdaki aralığın dışında bir zaman damgası oluşturmaya çalıştığınızda ortaya çıkar:

 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

Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.

Hata nasıl yeniden oluşturulur?

Pandalarda aşağıdaki üç tarihi içeren bir tarih aralığı oluşturmaya çalıştığımızı varsayalım:

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

Bu tarih aralığını oluşturmayı denemek için date_range() işlevini kullanabiliriz:

 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

OutOfBoundsDatetime hatasını alıyoruz çünkü 1/1/2300 zaman damgası pandaların izin verdiği nanosaniye cinsinden maksimum zaman damgasından büyük.

Zaman damgasını birim olarak nanosaniye kullanarak saklamak istemeseniz bile pandalar bunu otomatik olarak yapacaktır.

Hata nasıl düzeltilir?

Bu hataya geçici bir çözüm bulmanın en kolay yolu, minimum veya maksimum aralığın dışındaki tüm zaman damgalarını NaT değerlerine zorlayan error = ‘coerce’ bağımsız değişkenini kullanmaktır.

Örneğin, bir tarih aralığı oluşturmak ve izin verilen aralığın dışındaki tüm zaman damgalarını otomatik olarak NaT değerlerine zorlamak için aşağıdaki kodu kullanabiliriz:

 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 ')

#showdatetimes
print (some_dates)

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

Sonuç, üç datetime değerine sahip bir tarih aralığıdır ve son datetime, pandaların izin verdiği maksimum değeri aştığı için NaT’dir.

Tarih aralığını oluştururken bu sefer herhangi bir hata almadığımızı unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

Nasıl düzeltilir? Sütunlar çakışıyor ancak son ek belirtilmemiş
Nasıl düzeltilir: ‘numpy.ndarray’ nesnesinin ‘append’ özelliği yok
Nasıl düzeltilir? Tüm skaler değerleri kullanıyorsanız bir dizin iletmeniz gerekir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir