Python 数据帧的导数

Python 数据帧的导数,python,pandas,scipy,physics,derivative,Python,Pandas,Scipy,Physics,Derivative,我正在使用两个数据帧,让我们将它们命名为时间和电压,它们的形状是[2201行x 8列] 数据帧的第一行和最后一行分别为(时间和电压): 我可以很容易地画出每列的曲线(电压与时间)。 我想得到电压数据帧相对于时间数据帧的导数,或者它在数学中是什么样的(dvoltage/dtime),然后绘制(dvoltage/dtime)与时间的关系 我尝试了以下代码: def Derivative(): dV_dt = [] for c in range(len(V.columns)):

我正在使用两个数据帧,让我们将它们命名为时间和电压,它们的形状是[2201行x 8列]

数据帧的第一行和最后一行分别为(时间和电压):

我可以很容易地画出每列的曲线(电压与时间)。 我想得到电压数据帧相对于时间数据帧的导数,或者它在数学中是什么样的(dvoltage/dtime),然后绘制(dvoltage/dtime)与时间的关系

我尝试了以下代码:

def Derivative():
    dV_dt = []
    for c in range(len(V.columns)):
        dn = derivative(V.iloc[:,c], time.iloc[:,c], dx=time.iloc[:,c])
        dV_dt.append(dn)
    dV_dt = pd.DataFrame(dV_dt)
    print(dV_dt)
引发以下错误:

  File "C:\ProgramData\Anaconda3\Lib\site-packages\scipy\misc\common.py", line 119, in derivative
    val += weights[k]*func(x0+(k-ho)*dx,*args)
TypeError: 'Series' object is not callable

有人知道如何解决这个问题吗?提前感谢。

您可以尝试以下方法:

import pandas as pd
import numpy as np
V = pd.DataFrame(np.random.rand(2201, 8)*10)
time = pd.DataFrame(np.random.rand(2201, 8))
dV_dt = pd.DataFrame([np.diff(V[i])/np.diff(time[i]) for i in V.columns])
print (V,time,dV_dt)

请注意,结果dV_dt比原始两个数据帧少一行(仅2200行)。因为导数是在两个重要值之间取的。

你能分享你使用的数据样本吗?@SergedeGossondeVarennes我用一些数据更新了帖子。
import pandas as pd
import numpy as np
V = pd.DataFrame(np.random.rand(2201, 8)*10)
time = pd.DataFrame(np.random.rand(2201, 8))
dV_dt = pd.DataFrame([np.diff(V[i])/np.diff(time[i]) for i in V.columns])
print (V,time,dV_dt)