Pandas 数据框的 Python 集成

问题描述

我有以下带有 2 列的 Pandas 数据框 df,如下所示:

0  0
1. 22
2. 34
3. 21
4. 21
5. 92

如果我们将第一列绘制为 x 轴,将第二列绘制为 y 轴,我想对这条曲线下的面积进行积分。我已尝试使用 scipy (from scipy import integrate) 中的集成模块执行此操作,并按照我在在线示例中看到的方式应用:

print(df.integrate)

但是,似乎集成功能不起作用。我收到错误

Dataframe 对象没有集成属性

我该怎么做?

谢谢

解决方法

因为integrate是scipy方法而不是pandas方法,所以需要调用如下:

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

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

,

在给定固定数据样本的情况下,您需要数值积分。 Scipy 包列出了一些方法来做到这一点:https://docs.scipy.org/doc/scipy/reference/integrate.html#integrating-functions-given-fixed-samples

对于您的数据,梯形可能是最直接的。您向函数提供 yx 值。您没有发布数据框的列名,所以我对 x 使用 0-index,对 y 值使用 1-index

from scipy.integrate import trapz

trapz(df.iloc[:,1],df.iloc[:,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,5],'y':[0,5,6,7]})
x = df.x.values
y = df.y.values
print(integrate(x,y))