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
vs v
,i2
vs {{1等等。
但是,现在我需要为每个点和图表计算每个v
与Drain I
的斜率。我最初的想法是使用Gate V
循环来计算for
(和i1
,i2
...)和/或v系列中每个条目的斜率,像这样的东西:
i3
我理想情况下,从点到点有斜率,可以用matplotlib绘制图形。显然,for循环不起作用,但我不确定如何去做。
答案 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()
: