Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: float() argument must be a string or a number, not 'Period'

I have a pandas dataframe with columns like this:

df.columns = pd.to_datetime(list(df)) #list(df) = ["2017-01", "2016-01", ...] 

Then I performed an interpolation in each row of the dataset because I have some NaNs that I want to get rid off. Here is the result printed:

ORIGINAL   2007-12-01     NaN  2008-12-01     NaN  2009-12-01     NaN  2010-12-01   -0.35  2011-12-01    0.67  2012-12-01     NaN  2013-12-01     NaN  2014-12-01    1.03  2015-12-01    0.37  2016-12-01     NaN  2017-12-01     NaN  Name: row1, dtype: float64   INTERPOLATION   2007-12-01   -0.350000  2008-12-01   -0.350000  2009-12-01   -0.350000  2010-12-01   -0.350000  2011-12-01    0.670000  2012-12-01    0.790219  2013-12-01    0.910109  2014-12-01    1.030000  2015-12-01    0.370000  2016-12-01    0.370000  2017-12-01    0.370000  Name: row1, dtype: float64 

Then I try to plot the interpolated row and get:

TypeError: float() argument must be a string or a number, not 'Period'  

The whole code:

print("ORIGINAL\n", series) interpolation = series.interpolate(method=func, limit=10, limit_direction='both') interpolation.plot() print("INTERPOLATION\n",interpolation) 

It seems to me that the error is in the time values in the series, but I think matplotlib should be hable to handle it, so I'm doing something wrong for sure. Thanks in advance.

like image 439
J63 Avatar asked Apr 04 '17 11:04

J63


2 Answers

Here is the simplest answer,No need to upgrade or downgrade the pandas.

pd.plotting.register_matplotlib_converters() 

sometime registering causing another error which is like compute.use_bottleneck, use_numexpr error for getting rid of that call deregister :P

Like: pd.plotting.deregister_matplotlib_converters()

source:Link

like image 152
Muhammad Younus Avatar answered Sep 27 '22 22:09

Muhammad Younus


It works if I do:

plt.plot(row.index, row.values) plt.show() 

I don't know why though...

like image 26
J63 Avatar answered Sep 27 '22 22:09

J63