我有以下 pandas 数据框
df
,有 2 列,看起来像:
0 0
1. 22
2. 34
3. 21
4. 21
5. 92
如果我们将第一列绘制为 x 轴,第二列绘制为 y 轴,我想积分该曲线下的面积。我尝试使用
scipy
(from scipy import integrate
) 中的集成模块来执行此操作,并按照我在网上示例中看到的方式进行应用:
print(df.integrate)
但是,集成功能似乎不起作用。我收到错误:
Dataframe 对象没有集成属性
我该怎么办?
谢谢你
您希望在给定固定数据样本的情况下进行数值积分。 Scipy 包列出了一些执行此操作的方法:https://docs.scipy.org/doc/scipy/reference/integrate.html#integrating-functions-given-fixed-samples
对于您的数据,梯形可能是最直接的。您向函数提供
y
和 x
值。您没有发布数据框的列名称,因此我对 x 值使用 0 索引,对 y 值使用 1 索引
from scipy.integrate import trapz
trapz(df.iloc[:, 1], df.iloc[:, 0])
由于Integrate是一个scipy方法而不是pandas方法,因此您需要按如下方式调用它:
from scipy.integrate import trapz, simps
print(trapz(*args))
https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html
试试这个
import pandas as pd
import numpy as np
def integrate(x, y):
area = np.trapz(y=y, x=x)
return area
df = pd.DataFrame({'x':[0, 1, 2, 3, 4, 4, 5],'y':[0, 1, 3, 3, 5, 6, 7]})
x = df.x.values
y = df.y.values
print(integrate(x, y))