df = pd.read_csv('data.csv')
v = df['Gate V']
i1 = df['Drain I.1']

     Drain V   Gate V       Drain I
0       0.01    -5.00  3.270000e-14
1       0.01    -4.85  1.740000e-14
2       0.01    -4.70  2.620000e-14
3       0.01    -4.55  6.270000e-14
...     ...     ...    ...

我有一个大的.csv文件,看起来像上面的,除了有更多的数据。到目前为止,我的目标是为几个不同的Drain I绘制Gate VDrain V的对比图。我通过使用上述v = ...i1 = ...语句,然后简单地绘制i1vsvi2vsv,依此类推,完成了这项工作。
但是,现在我需要计算每个点的每个Drain IvsGate V的斜率,并绘制图表。我最初的想法是使用for循环来计算i1(和i2i3…)和/或v系列中每个条目的斜率,如下所示:
for x in i1:
    slope1 = (i1[x+1] - i1[x]) / (v[x+1] - v[x])

理想情况下,我会有一个点到点的斜率,并且可以使用matplotlib绘制它。显然,那个for循环行不通,但我不知道该怎么做。

最佳答案

在循环中计算坡度时,坡度只是两列中连续差异的比率:

deltas = df.diff().drop(0)
slope = deltas['Drain I'] / deltas['Gate V']

.drop(0)将删除第一行diff,这将是所有nan以保持原始形状。
下面是一个小例子:
df = pd.DataFrame({'Gate V': [-5.00, -4.85, -4.70, -4.55], 'Drain V': [0.01, 0.01, 0.01, 0.01], 'Drain I': [3.270000e-14, 1.740000e-14, 2.620000e-14, 6.270000e-14]})
deltas = df.diff().drop(0)
slope = deltas['Drain I'] / deltas['Gate V']

现在有一个slope系列包含
1   -1.020000e-13
2    5.866667e-14
3    2.433333e-13
dtype: float64

可以使用slope.plot()获得基本图:
python - 有没有一种方法可以计算两个数据帧中每个连续点的斜率,存储所有斜率值,然后绘制斜率?-LMLPHP

关于python - 有没有一种方法可以计算两个数据帧中每个连续点的斜率,存储所有斜率值,然后绘制斜率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42680299/

10-12 19:17