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