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 V
与Drain V
的对比图。我通过使用上述v = ...
和i1 = ...
语句,然后简单地绘制i1
vsv
,i2
vsv
,依此类推,完成了这项工作。但是,现在我需要计算每个点的每个
Drain I
vsGate V
的斜率,并绘制图表。我最初的想法是使用for
循环来计算i1
(和i2
,i3
…)和/或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 - 有没有一种方法可以计算两个数据帧中每个连续点的斜率,存储所有斜率值,然后绘制斜率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42680299/