Pandas 数据框的 Python 集成

问题描述 投票:0回答:3

我有以下 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 对象没有集成属性

我该怎么办?

谢谢你

python pandas scipy numerical-integration
3个回答
1
投票

您希望在给定固定数据样本的情况下进行数值积分。 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])

0
投票

由于Integrate是一个scipy方法而不是pandas方法,因此您需要按如下方式调用它:

from scipy.integrate import trapz, simps
print(trapz(*args))

https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html


0
投票

试试这个

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))
© www.soinside.com 2019 - 2024. All rights reserved.