anyone know pandas ? Don't understand error: NotImplementedError...
someone
newsboost at gmail.com
Wed Apr 17 17:08:49 EDT 2013
Hi,
Here's my script (from
http://brenda.moon.net.au/category/data-visualisation/:
============================
#!/usr/bin/python
import pandas
import datetime
import numpy
datesList = [datetime.date(2011,12,1), \
datetime.date(2011,12,2), \
datetime.date(2011,12,3), \
datetime.date(2011,12,10)]
countsList = numpy.random.randn(len(datesList))
startData = datetime.datetime(2011,12,3)
endData = datetime.datetime(2011,12,8)
def convertListPairToTimeSeries(dList, cList):
# my dateList had date objects, so convert back to datetime objects
dListDT = [datetime.datetime.combine(x, datetime.time()) for x in
dList]
# found that NaN didn't work if the cList contained int data
cListL = [float(x) for x in cList]
# create the index from the datestimes list
indx = pandas.Index(dListDT)
# create the timeseries
ts = pandas.Series(cListL, index=indx)
# fill in missing days
ts = ts.asfreq(pandas.datetools.DateOffset())
return ts
print "\nOriginal datesList list:\n", datesList
tSeries = convertListPairToTimeSeries(datesList, countsList)
print "\nPandas timeseries:\n", tSeries
# use slicing to change length of data
tSeriesSlice = tSeries.ix[startData:endData]
print "\nPandas timeseries sliced between", startData.date(), \
"and", endData.date(), ":\n", tSeriesSlice
# use truncate instead of slicing to change length of data
tSeriesTruncate = tSeries.truncate(before=startData, after=endData)
print "\nPandas timeseries truncated between", startData.date(), \
"and", endData.date(), ":\n", tSeriesTruncate
# my data had lots of gaps that were actually 0 values, not missing data
# So I used this to fix the NaN outside the known outage
startOutage = datetime.datetime(2011,12,7)
endOutage = datetime.datetime(2011,12,8)
tsFilled = tSeries.fillna(0)
# set the known outage values back to NAN
tsFilled.ix[startOutage:endOutage] = numpy.NAN
print "\nPandas timeseries NaN reset to 0 outside known outage between", \
startOutage.date(), "and", endOutage.date(), ":\n", tsFilled
print "\nPandas series.tail(1) and series.head(1) are handy for " +\
"checking ends of list:\n", tsFilled.head(1), tsFilled.tail(1)
print
tsFilled.plot(); # <====== NotImplementedError...!!!
============================
If I run it, I get:
--------------------
...
...
..
2011-12-09 0.000000
2011-12-10 1.431665
Freq: <1 DateOffset>
Pandas series.tail(1) and series.head(1) are handy for checking ends of
list:
2011-12-01 -0.969533
Freq: <1 DateOffset> 2011-12-10 1.431665
Freq: <1 DateOffset>
Traceback (most recent call last):
File "./pandas_example.py", line 57, in <module>
tsFilled.plot();
File "/usr/lib/pymodules/python2.7/pandas/tools/plotting.py", line
985, in plot_series
plot_obj.generate()
File "/usr/lib/pymodules/python2.7/pandas/tools/plotting.py", line
376, in generate
self._make_plot()
File "/usr/lib/pymodules/python2.7/pandas/tools/plotting.py", line
623, in _make_plot
if self.use_index and self._use_dynamic_x():
File "/usr/lib/pymodules/python2.7/pandas/tools/plotting.py", line
619, in _use_dynamic_x
return (freq is not None) and self._is_dynamic_freq(freq)
File "/usr/lib/pymodules/python2.7/pandas/tools/plotting.py", line
602, in _is_dynamic_freq
freq = freq.rule_code
File "/usr/lib/pymodules/python2.7/pandas/tseries/offsets.py", line
214, in rule_code
raise NotImplementedError
NotImplementedError
--------------------
Can anyone tell why this error appears and how to fix it?
More information about the Python-list
mailing list