Я пытаюсь получить кривую площади экспериментального набора данных, который в настоящее время имеет тип: серия. Серия состоит из 2700 записей, но я хочу интегрировать только первые 300 записей. Ожидаемый результат - -0,2923, но фактический результат с использованием scipy.integrate.trapz () - 0.
import scipy
import pandas as pd
#display only first 10 entries to give a feel for the data:
dataseries.head(10)
649.6 -0.000990
649.9 -0.000849
650.1 -0.000855
650.3 -0.001658
650.6 -0.001648
650.8 -0.001244
651.1 -0.001144
651.3 -0.001004
651.5 -0.000684
651.8 -0.001233
print(scipy.integrate.trapz(dataseries[:300], axis=0))
0.0
Я (неуверенно) преобразовал ряд в массив, а массив в список, тогда интеграл работает, как и ожидалось в списке:
df=pd.DataFrame({'x':dataseries.index, 'y':dataseries.values})
dataArray=df.values
datalist=[[0 for u in range(0, 300)] for y in range(0, 2)]
for c in range(0, 300):
datalist[0][c]=dataArray[c][0]
if math.isnan(dataArray[c][1]):
datalist[1][c]=dataArray[c+1][1]
else:
datalist[1][c]=dataArray[c][1]
print(scipy.integrate.trapz(datalist[1], datalist[0]))
-0.2923
Есть ли способ интегрировать первые серии напрямую?
Если нет, то какой самый чистый и простой способ добраться до интеграла?