[Scipy-svn] r2393 - trunk/Lib/sandbox/timeseries

scipy-svn at scipy.org scipy-svn at scipy.org
Mon Dec 11 13:55:51 EST 2006


Author: mattknox_ca
Date: 2006-12-11 12:55:48 -0600 (Mon, 11 Dec 2006)
New Revision: 2393

Modified:
   trunk/Lib/sandbox/timeseries/timeseries.py
Log:


Modified: trunk/Lib/sandbox/timeseries/timeseries.py
===================================================================
--- trunk/Lib/sandbox/timeseries/timeseries.py	2006-12-11 18:54:29 UTC (rev 2392)
+++ trunk/Lib/sandbox/timeseries/timeseries.py	2006-12-11 18:55:48 UTC (rev 2393)
@@ -77,6 +77,20 @@
             return "<no data>"
             
             
+    def firstValue(self, asDate=False):
+        val = super(TimeSeries, self).firstValue()
+        if asDate:
+            return tsdate.Date(freq=self.freq, val=val)
+        else:
+            return val
+        
+    def lastValue(self, asDate=False):
+        val = super(TimeSeries, self).lastValue()
+        if asDate:
+            return tsdate.Date(freq=self.freq, val=val)
+        else:
+            return val
+
     ### DATA 
     
     def __add__(self, other):
@@ -178,6 +192,30 @@
     if start.freq != end.freq:
         raise ValueError("start and end dates must have same frequency!")
     return TimeSeries(numpy.arange(int(start), int(end)+1), dtype=corelib.freqTypeMapping[start.freq], freq=start.freq, observed='END', startIndex=int(start))
+
+def year(dateSer):
+    return __getDateInfo(dateSer,'Y')
+
+def quarter(dateSer):
+    return __getDateInfo(dateSer,'Q')
+    
+def month(dateSer):
+    return __getDateInfo(dateSer,'M')
+    
+def day(dateSer):
+    return __getDateInfo(dateSer,'D')
+    
+def day_of_week(dateSer):
+    return __getDateInfo(dateSer,'W')
+
+def __getDateInfo(dateSer,infoCode):
+    newData = ma.array(cseries.getDateInfo(dateSer.data.filled(), dateSer.dtype.freq, infoCode))
+    newData[dateSer.data.mask] = ma.masked
+    newSer = copy.deepcopy(dateSer)
+    newSer.data = newData
+    newSer.dtype = numpy.int_
+    return newSer
+
         
 def validOpInputs(ser1, ser2):
     if isinstance(ser1, TimeSeries) and isinstance(ser2, TimeSeries) and ser1.freq != ser2.freq:




More information about the Scipy-svn mailing list