Как выполнить локальный полиномиальный фитинг в Python

У меня есть 200 тыс. Точек данных, и я пытаюсь получить производное от установленного многочлена. Я разделил свой набор данных на меньшие каждые 0,5 К, данные – напряжение и температура. Мой код выглядит примерно так:

import pandas as pd import numpy as np import matplotlib.pyplot as plt testset=pd.read_csv('150615H0.csv',sep='\t') x=np.linspace(1,220,219) ub=min(testset['T(K)']) lb=min(testset['T(K)'])-1 q={i:testset[(testset['T(K)'] < ub+i) & (testset['T(K)'] > lb+i)] for i in x} f={j:np.polyfit(q[j]['T(K)'],q[j]['Vol(V)'],4) for j in q} fs={k:np.poly1d(f[k]) for k in f} fsd={l:np.polyder(fs[l],1) for l in fs} for kk in q: plt.plot(q[kk]['T(K)'],fsd[kk](q[kk]['T(K)']),color='blue',linewidth=2,label='fit') 

Непосредственно, производная прерывистая, и мне это не нравится. Есть ли другой способ установить полином локально и получить непрерывную производную одновременно?

    Посмотрите на фильтр Савицки-Голлай для эффективного локального полиномиального фитинга.

    Он реализуется, например, в scipy.signal.savgol_filter . Производная от установленного многочлена может быть получена с аргументом производной deriv=1 .