有没有办法计算两个数据帧中每个连续点的斜率,存储斜率的所有值,然后绘制它?

时间:2017-03-08 19:30:57

标签: python python-3.x pandas numpy matplotlib

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 = ...语句完成了此操作,然后只绘制i1 vs vi2 vs {{1等等。

但是,现在我需要为每个点和图表计算每个vDrain I的斜率。我最初的想法是使用Gate V循环来计算for(和i1i2 ...)和/或v系列中每个条目的斜率,像这样的东西:

i3

我理想情况下,从点到点有斜率,可以用matplotlib绘制图形。显然,for循环不起作用,但我不确定如何去做。

1 个答案:

答案 0 :(得分:1)

在循环中计算它的斜率只是两列中连续差异的比率:

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

.drop(0)将移除差异的第一行,这将是保留原始形状的所有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()

获得基本情节

enter image description here