数据框架的Python集成

数据框架的Python集成,python,pandas,scipy,integrate,Python,Pandas,Scipy,Integrate,我有以下数据帧df,有两列,如下所示: 0 0 1. 22 2. 34 3. 21 4. 21 5. 92 如果我们把第一列画成x轴,第二列画成y轴,我想把曲线下的面积积分。我曾尝试使用来自scipy(来自scipy import integrate)的集成模块进行此操作,并按以下方式应用,如我在在线示例中看到的: print(df.integrate) 然而,集成功能似乎不起作用。我收到错误信息: Dataframe对象没有属性 我该怎么办 谢谢因为integrate是一个scipy方法

我有以下数据帧
df
,有两列,如下所示:

0  0
1. 22
2. 34
3. 21
4. 21
5. 92
如果我们把第一列画成x轴,第二列画成y轴,我想把曲线下的面积积分。我曾尝试使用来自
scipy
来自scipy import integrate
)的集成模块进行此操作,并按以下方式应用,如我在在线示例中看到的:

print(df.integrate)
然而,集成功能似乎不起作用。我收到错误信息:

Dataframe对象没有属性

我该怎么办


谢谢

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

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

给定一个固定的数据样本,您需要数值积分。Scipy软件包列出了实现此目的的几种方法:

对于您的数据,梯形可能是最直接的。向函数提供
y
x
值。您没有发布数据帧的列名,因此我使用0索引表示x值,1索引表示y值

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

谢谢你的回答和链接。我现在的问题是,在例如列表中,如何将第一列作为x轴,第二列作为y轴?我需要正确地执行以下操作:integral=simps(y,x)根据链接?df['x']中的示例。到_list()或df.x.values,第一个给你一个列表,第二个是本地方法。感谢你的澄清!谢谢你的回答!我已经应用了上面列出的代码(我的x轴是“时间”,y轴是“燃料”,我相信它们都是字符串)。当运行以下行:print(trapz(df.iloc[:,'fuel[m3'],df.iloc[:,'time[s]'))时,我得到以下值error但是:基于位置的索引只能有[integer,integer slice(包括起点,不包括终点),整数列表,布尔数组]键入感谢您的回答!然而,使用此方法,我需要手动填写x轴和y轴,但是如果这些值是一个非常大的列,该怎么办?我如何从数据框中分别获取x轴和y轴?提到的数据框只是一个示例数据框。您可以使用df['col_name']获取列值。值(用x值或y值列替换列名)