[SciPy-user] [timeseries] Missing dates

Christiaan Putter ceputter@googlemail....
Sun Apr 5 12:05:54 CDT 2009


Hi there,

Again some missing dates questions...

I'm trying to use a timeseries with records, the setup looks like this:

historics = ydp.quotes_historical_yahoo('INTC')

dates = ts.date_array(historics['date'], freq='DAILY').asfreq('BUSINESS')

dtype=[('open',  'f4'),
       ('close', 'f4'),
       ('high',  'f4'),
       ('low',   'f4'),
       ('volume','u4'),
       ]

data = zip(historics['open'],
           historics['close'],
           historics['high'],
           historics['low'],
           historics['volume'],
           )

raw_series = ts.time_series(data, dates, dtype=dtype)
series = ts.fill_missing_dates(raw_series)

Doing a report on this results in all records being masked...

basicReport = rl.Report(raw_series, series)   <--  I get a traceback
when passing in only one argument  (at the bottom of this email
somewhere)
basicReport()

prints:

***********

05-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
06-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
09-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
10-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
11-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
12-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
13-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
16-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
17-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
18-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
19-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
20-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
23-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)
24-Feb-2004 | (--, --, --, --, --) | (--, --, --, --, --)

************

I'm guessing the report is using ts.fill_missing_dates() which doesn't
play well with records.  That's why the series and raw_series look the
same in the report...

Reporting only a specific column:
basicReport = rl.Report(raw_series['close'], series['close'])

**********

01-Jul-2008 | 21.03 | --
02-Jul-2008 | 20.41 | --
03-Jul-2008 | 20.15 | --
04-Jul-2008 |    -- | --
07-Jul-2008 |  20.2 | --
08-Jul-2008 |  20.4 | --
09-Jul-2008 | 19.32 | --
10-Jul-2008 | 20.11 | --
11-Jul-2008 | 20.13 | --

************


So how would I go about doing fill missing dates on a timeseries with records?



Besides that I managed to use timeseries as a data source in chaco
plots.  Basic functionality is there, though I'm sure some guys at
enthought will be able to improve on it.  For their tick axis to work
with dates properly I had to convert series.dates into posix
timestamps:

index = [time.mktime(t.timetuple()) for t in series.dates.tolist()]
time_ds = ArrayDataSource(index)

Not very efficient though I guess.

In chaco a plot's index and values are in seperate data sources, which
means timeseries with different frequencies require different indexes.
 I'll talk with one of their devs to see what's the best approach to
deal with that.

I'm assuming you merge the index axis somehow in matplotlib when
plotting series with different frequencies?  So if I were to plot
something with a business frequency for the entire year 2009, and on
the same figure plot a series with daily frequency just in January I'm
guessing weekends will show up as gaps in the first plot?  Just for
january or for the entire year?

In any case, I'll send along an example once it's actually usable.

Figure attached...

Have a nice weekend.


*****************
Traceback from calling report with only one argument.

I'm guessing it's something to do with the records.

Traceback (most recent call last):
  File "/data/workspace/lynxgraphs/qtest_chaco.py", line 91, in <module>
    basicReport()
  File "/usr/local/lib/python2.5/site-packages/scikits.timeseries-0.91.0-py2.5-linux-x86_64.egg/scikits/timeseries/lib/reportlib.py",
line 338, in __call__
    rows.append([datefmt_func(d)]+[fmt_func[i](ser.series[d - _sd])
for i, ser in enumerate(tseries)])
  File "/usr/local/lib/python2.5/site-packages/numpy/ma/core.py", line
2578, in __getitem__
    dout = ndarray.__getitem__(ndarray.view(self, ndarray), indx)
IndexError: index out of bounds
-------------- next part --------------
A non-text attachment was scrubbed...
Name: chaco_timeseries.jpeg
Type: image/jpeg
Size: 58706 bytes
Desc: not available
Url : http://mail.scipy.org/pipermail/scipy-user/attachments/20090405/45d1d75b/attachment-0001.jpeg 


More information about the SciPy-user mailing list