Reputation: 63619
I have a Pandas Series with the following values. How can we perform integration to find the area under this plot?
Hour
0.00000 1.195617
0.23990 2.408227
0.47980 1.256069
0.71970 2.227347
0.95960 1.397774
1.19949 1.896309
1.43939 1.309016
1.67929 1.827614
1.91919 1.383252
2.15909 1.630766
2.39899 1.360364
2.63889 1.541367
2.87879 1.560319
3.11869 0.743437
3.35859 1.549370
...
20.39141 2.067811
20.63131 1.938257
20.87121 1.944990
21.11111 1.853212
21.35101 1.702590
21.59091 1.746243
21.83081 2.337570
22.07071 3.773000
22.31061 1.532937
22.55051 1.178040
22.79040 1.850222
23.03030 1.092376
23.27020 1.895959
23.51010 0.966083
23.75000 1.950073
Name: Cost, Length: 100, dtype: float64
Tried the integration function from the cookbook but it's throwing an error
TypeError: Setting <class 'pandas.core.index.Float64Index'> dtype to anything other than float64 or object is not supported
Upvotes: 0
Views: 175
Reputation: 7358
The recipe in the cookbook requires you to use a pd.TimeSeries and not pd.Series. You can convert your index to a pd.Timestamp like so to get a pd.TimeSeries
i = [0.00000,
0.23990,
0.47980,
0.71970,
0.95960,
1.19949,
1.43939,
1.67929,
1.91919,
2.15909,
2.39899,
2.63889,
2.87879,
3.11869,
3.35859]
c = [1.195617,
2.408227,
1.256069,
2.227347,
1.397774,
1.896309,
1.309016,
1.827614,
1.383252,
1.630766,
1.360364,
1.541367,
1.560319,
0.743437,
1.549370]
import pandas as pd
s = pd.TimeSeries (index = [pd.Timestamp(k) for k in i], data = c)
s.integrate()
This should yield,
Out[29]:
4.3059284999999994e-09
Upvotes: 1