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.
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
It works if I do:
plt.plot(row.index, row.values) plt.show()
I don't know why though...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With