मुझे लगता है कि पायथन के डेटाटाइम मॉड्यूल, सुपी के डेटाटाइम 64 / टाइमडेल्टा64 और पांडा के टाइमस्टैम्प / टेमीडेल्टा ऑब्जेक्ट्स के बीच संबंधों को बेहतर ढंग से समझाने के लिए एक उत्तर में अधिक समेकित प्रयास हो सकता है।
पाइथन की डेटाइम स्टैंडर्ड लाइब्रेरी
डेटाटाइम मानक लाइब्रेरी में चार मुख्य ऑब्जेक्ट हैं
- समय - केवल समय, घंटे, मिनट, सेकंड और माइक्रोसेकंड में मापा जाता है
- तारीख - केवल वर्ष, महीना और दिन
- डेटाइम - समय और तारीख के सभी घटक
- टाइमडेल्टा - दिनों की अधिकतम इकाई के साथ समय की मात्रा
ये चार वस्तुएं बनाएं
>>> import datetime
>>> datetime.time(hour=4, minute=3, second=10, microsecond=7199)
datetime.time(4, 3, 10, 7199)
>>> datetime.date(year=2017, month=10, day=24)
datetime.date(2017, 10, 24)
>>> datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 24, 4, 3, 10, 7199)
>>> datetime.timedelta(days=3, minutes = 55)
datetime.timedelta(3, 3300)
>>> # add timedelta to datetime
>>> datetime.timedelta(days=3, minutes = 55) + \
datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 27, 4, 58, 10, 7199)
NumPy की datetime64 और timedelta64 ऑब्जेक्ट्स
NumPy की कोई अलग तिथि और समय ऑब्जेक्ट नहीं है, समय में एक क्षण का प्रतिनिधित्व करने के लिए सिर्फ एक डेटाटाइम 64 ऑब्जेक्ट है। डेटाटाइम मॉड्यूल के डेटाटाइम ऑब्जेक्ट में माइक्रोसेकंड सटीक (एक सेकंड का एक मिलियन) है। NumPy का datetime64 ऑब्जेक्ट आपको घंटे से लेकर एटोसोसेकंड (10 ^ -18) तक इसकी शुद्धता निर्धारित करने की अनुमति देता है। यह कंस्ट्रक्टर अधिक लचीला है और कई तरह के इनपुट ले सकता है।
NumPy के datetime64 और timedelta64 ऑब्जेक्ट का निर्माण करें
इकाइयों के लिए एक स्ट्रिंग के साथ एक पूर्णांक पास करें। सभी इकाइयाँ यहाँ देखें । यह UNIX युग के बाद कई इकाइयों में परिवर्तित हो जाता है: 1 जनवरी, 1970
>>> np.datetime64(5, 'ns')
numpy.datetime64('1970-01-01T00:00:00.000000005')
>>> np.datetime64(1508887504, 's')
numpy.datetime64('2017-10-24T23:25:04')
जब तक वे आईएसओ 8601 प्रारूप में हैं तब तक आप स्ट्रिंग्स का उपयोग कर सकते हैं।
>>> np.datetime64('2017-10-24')
numpy.datetime64('2017-10-24')
Timedeltas की एक एकल इकाई है
>>> np.timedelta64(5, 'D') # 5 days
>>> np.timedelta64(10, 'h') 10 hours
दो डेटाटाइम 64 ऑब्जेक्ट्स घटाकर भी उन्हें बना सकते हैं
>>> np.datetime64('2017-10-24T05:30:45.67') - np.datetime64('2017-10-22T12:35:40.123')
numpy.timedelta64(147305547,'ms')
पंडस टाइमस्टैम्प और टेमेडेल्टा न्यूमपी के शीर्ष पर बहुत अधिक कार्यक्षमता का निर्माण करते हैं
एक पांडा टाइमस्टैम्प एक समय में एक डेटाइम के समान है लेकिन बहुत अधिक कार्यक्षमता के साथ है। आप उन्हें pd.Timestamp
या तो निर्माण कर सकते हैं pd.to_datetime
।
>>> pd.Timestamp(1239.1238934) #defautls to nanoseconds
Timestamp('1970-01-01 00:00:00.000001239')
>>> pd.Timestamp(1239.1238934, unit='D') # change units
Timestamp('1973-05-24 02:58:24.355200')
>>> pd.Timestamp('2017-10-24 05') # partial strings work
Timestamp('2017-10-24 05:00:00')
pd.to_datetime
बहुत समान रूप से काम करता है (कुछ और विकल्पों के साथ) और स्ट्रिंग्स की सूची को टाइमस्टैम्प में बदल सकता है।
>>> pd.to_datetime('2017-10-24 05')
Timestamp('2017-10-24 05:00:00')
>>> pd.to_datetime(['2017-1-1', '2017-1-2'])
DatetimeIndex(['2017-01-01', '2017-01-02'], dtype='datetime64[ns]', freq=None)
पायथन डेटाइम को डेटाइम 64 और टाइमस्टैम्प में परिवर्तित करना
>>> dt = datetime.datetime(year=2017, month=10, day=24, hour=4,
minute=3, second=10, microsecond=7199)
>>> np.datetime64(dt)
numpy.datetime64('2017-10-24T04:03:10.007199')
>>> pd.Timestamp(dt) # or pd.to_datetime(dt)
Timestamp('2017-10-24 04:03:10.007199')
डेटाइम और टाइमस्टैम्प के लिए सुन्न datetime64 परिवर्तित
>>> dt64 = np.datetime64('2017-10-24 05:34:20.123456')
>>> unix_epoch = np.datetime64(0, 's')
>>> one_second = np.timedelta64(1, 's')
>>> seconds_since_epoch = (dt64 - unix_epoch) / one_second
>>> seconds_since_epoch
1508823260.123456
>>> datetime.datetime.utcfromtimestamp(seconds_since_epoch)
>>> datetime.datetime(2017, 10, 24, 5, 34, 20, 123456)
टाइमस्टैम्प में परिवर्तित करें
>>> pd.Timestamp(dt64)
Timestamp('2017-10-24 05:34:20.123456')
टाइमस्टैम्प से डेटाटाइम और डेटाटाइम 64 में परिवर्तित करें
यह काफी आसान है क्योंकि पांडा टाइमस्टैम्प बहुत शक्तिशाली हैं
>>> ts = pd.Timestamp('2017-10-24 04:24:33.654321')
>>> ts.to_pydatetime() # Python's datetime
datetime.datetime(2017, 10, 24, 4, 24, 33, 654321)
>>> ts.to_datetime64()
numpy.datetime64('2017-10-24T04:24:33.654321000')
numpy
केpandas
संस्करणों पर काम करना चाहिए ।