pandas.DataFrame 的矢量化集成

2024-03-02

我有一个DataFrame力-位移数据。位移数组已设置为DataFrame索引,列是我针对不同测试的各种力曲线。

如何计算完成的功(即“曲线下面积”)?

我在看numpy.trapz http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.trapz.html这似乎可以满足我的需要,但我认为我可以避免像这样循环每一列:

import numpy as np
import pandas as pd 

forces = pd.read_csv(...)
work_done = {}

for col in forces.columns:
    work_done[col] = np.trapz(forces.loc[col], forces.index))

我希望创造一个新的DataFrame曲线下的面积而不是dict,并认为DataFrame.apply()或者某些东西可能合适,但不知道从哪里开始寻找。

简而言之:

  1. 我可以避免循环吗?
  2. 我可以创建一个DataFrame直接完成的工作?

预先感谢您的任何帮助。


你可以通过传递整个向量来向量化DataFrame to np.trapz http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.trapz.html并指定axis=论证,例如:

import numpy as np
import pandas as pd

# some random input data
gen = np.random.RandomState(0)
x = gen.randn(100, 10)
names = [chr(97 + i) for i in range(10)]
forces = pd.DataFrame(x, columns=names)

# vectorized version
wrk = np.trapz(forces, x=forces.index, axis=0)
work_done = pd.DataFrame(wrk[None, :], columns=forces.columns)

# non-vectorized version for comparison
work_done2 = {}
for col in forces.columns:
    work_done2.update({col:np.trapz(forces.loc[:, col], forces.index)})

这些给出以下输出:

from pprint import pprint

pprint(work_done.T)
#            0
# a -24.331560
# b -10.347663
# c   4.662212
# d -12.536040
# e -10.276861
# f   3.406740
# g  -3.712674
# h  -9.508454
# i  -1.044931
# j  15.165782

pprint(work_done2)
# {'a': -24.331559643023006,
#  'b': -10.347663159421426,
#  'c': 4.6622123535050459,
#  'd': -12.536039649161403,
#  'e': -10.276861220217308,
#  'f': 3.4067399176289994,
#  'g': -3.7126739591045541,
#  'h': -9.5084536839888187,
#  'i': -1.0449311137294459,
#  'j': 15.165781517623724}

您的原始示例还存在一些其他问题。col是列名而不是行索引,因此它需要索引数据帧的第二个维度(即.loc[:, col]而不是.loc[col])。另外,最后一行有一个额外的尾括号。


Edit:

You could还生成输出DataFrame直接由.apply http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.apply.htmling np.trapz到每一列,例如:

work_done = forces.apply(np.trapz, axis=0, args=(forces.index,))

然而,这并不是真正的“正确”矢量化 - 您仍在调用np.trapz分别在每一列上。您可以通过比较速度来看到这一点.apply反对打电话的版本np.trapz直接地:

In [1]: %timeit forces.apply(np.trapz, axis=0, args=(forces.index,))
1000 loops, best of 3: 582 µs per loop

In [2]: %timeit np.trapz(forces, x=forces.index, axis=0)
The slowest run took 6.04 times longer than the fastest. This could mean that an
intermediate result is being cached 
10000 loops, best of 3: 53.4 µs per loop

这不是一个完全公平的比较,因为第二个版本排除了构建DataFrame来自输出 numpy 数组,但这应该仍然小于执行实际积分所需的时间差。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas.DataFrame 的矢量化集成 的相关文章

  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 在可编辑的QSqlQueryModel中实现setEditStrategy

    这是后续这个问题 https stackoverflow com questions 49752388 editable qtableview of complex sql query 在那里 我们创建了 QSqlQueryModel 的可
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如
  • 使用 Python 生成类似于 Messenger 或 kik 代码的圆形二维码

    我可以使用 Python 生成圆形 QR 码 就像 Facebook Messenger 或 kik 使用的那样吗 我访问了很多网站 但找不到这种类型的二维码 默认情况下 Python 生成方形 QR 码 但在我的项目中我想要圆形 QR 码

随机推荐

  • EF 迁移应该去哪里,我的类库项目还是我的 ASP.NET 项目?

    我的解决方案包含 FooBarAsp 一个asp项目 为应用程序提供UI FooBar 一个类库 应用程序 FooBar 测试 一个测试项目 测试应用程序 FooBar 使用 EF 6 Code First 并包含许多模型和一个DataCo
  • 你能在不破坏后退按钮的情况下拦截 UIWebView 中的 NSURLRequests 吗?

    我在将自定义 HTML 加载到我的UIWebView不破坏其goBack method 什么有效 我正在拦截我的 URL 请求UIWebView这样我就可以加载自定义 HTML 我可以控制所有 HTML 因此我的特殊应用程序请求使用自定义方
  • 如何在保存或编辑文件 tfs 时禁用自动签出

    请告诉我如何在编辑或保存文件时禁用 tfs 与 2013 中的自动结帐 我可以在 选项 对话框中选择 不执行任何操作 单击 源代码管理 然后单击 环境 然后在 编辑时 框中选择 不执行任何操作 然后选择 允许编辑签入的项目 但这不会无法解决
  • 是否可以一次向 pandas DataFrame 添加多个列?

    如果我想创建一个包含多个列的新 DataFrame 我可以一次添加所有列 例如 如下所示 data col 1 0 1 2 3 col 2 4 5 6 7 df pd DataFrame data 但现在假设我想向此 DataFrame 添
  • 如何在wpf中刷新窗口?

    我正在开发一个小项目 它是一个带有 4 个 WPF 选项卡的窗口 第一个选项卡是我完成大部分工作的地方 但有时我需要移回其他选项卡 其中一个选项卡有一个 DataGrid 它绑定到一个受我所在的主选项卡影响的列表 当我在第一个选项卡上更新某
  • android.support.v7.widget.SwitchCompat 周围的选择框

    我试图在我的应用程序中模仿新的材料设计开关 并且 switchcompat 工作得很好 唯一的问题是触摸开关周围会出现一个灰色的选择框 这确实破坏了干净的外观 这是我可以删除的东西吗 Use
  • 如何使用 Xamarin Forms 查看 PDF 文件

    有什么方法可以使用 xamarin 表单来查看 PDF 文件而不使用自定义渲染器 Android public void OpenPdf string filePath Android Net Uri uri Android Net Uri
  • 如何阻止机器人和垃圾邮件提交评论?

    现在 我正在使用验证码图像 我创建了文本字段并使用 JavaScript 隐藏它 我希望它的值在服务器端为空 因为机器人应该填写表单上的所有字段 如果值不为空 则不会处理注释 我还使用时间戳来检查提交评论花了多长时间 我想如果评论是在 15
  • Grails 内联插件:无法升级通过 BuildConfig.groovy 配置的插件

    我们的应用程序分为一个主应用程序和一些插件 我们通过 BuildConfig groovy 文件使用内联插件 当需要对整个生产进行 WAR 时 我收到以下消息 您无法升级以下插件 通过 BuildConfig groovy 配置 删除配置以
  • 国际化 Web 应用程序的最佳实践?

    国际化网络应用程序似乎总是一件苦差事 无论您对可插入语言做了多少计划 总会存在编码问题 不适合您的模板的时髦措辞以及其他问题 我认为 获得 SO 社区的意见是很有用的 程序员在决定将其 Web 应用程序国际化时应该注意这些事项 国际化很困难
  • 如何从地址栏搜索网站

    当我写 stackoverflow com 或 bing com 然后在 google chrome URL 中输入空格时 它会添加 搜索 stackoverflow 或 搜索 bing 那么我们需要在网络应用程序中实现什么才能让 goog
  • 以 vsdoc 格式记录 javascript 的 T 类型数组,我发现错误了吗?

    下列的这些 vsdoc 文档指南 http weblogs asp net bleroy archive 2007 04 23 the format for javascript doc comments aspx 我无法让智能感知对给定类
  • XmlSchema.Read 给出 COMException“灾难性失败”

    我有一个实用程序类 其中包含一些与 XML 模式相关的方法 在没有任何代码更改或对环境进行任何已知更改的情况下 它突然开始出现系统性故障 失败的方法 public static XmlSchema GetSchema string xsdF
  • Android 交叉编译时链接器错误

    我想为 Android 交叉编译我的项目 我创建了 cargo config 如下 target armv7 linux androideabi ar optHDD AndroidNDK toolchains llvm prebuilt l
  • 将工作表添加到 Excel 工作簿

    我正在尝试创建一个WorkbookExcel 中有多个工作表 但我不知道如何创建多个工作表 我可以很好地创建一个 但是当我尝试创建第二个来写入时 我收到错误 Dim app As Application New Application Di
  • 使用 AngularJS 和 jQuery 修改 DOM (slideDown/slideUp)

    我正在尝试使用 AngularJS 实现 SlideDown slideUp 动画 我不能使用 CSS3 的转换 不幸的是 因为height被设定为auto 而且我不想使用the max height解决方法 https stackover
  • 我的 C# 应用程序被防病毒应用程序标记。我如何找出原因? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个 C 应用程序被多个防病毒应
  • 减去数据帧 pandas 时的 NaN

    我有两个数据框 只有一些重叠的索引和列 old pd DataFrame index A B C columns k l m data abs np floor np random rand 3 3 10 new pd DataFrame
  • 在PIL中绘制半透​​明多边形

    如何使用绘制半透明多边形Python 图像库 https en wikipedia org wiki Python Imaging Library 您可以在单独的 RGBA 图像上绘制多边形 然后使用Image paste 图像 框 蒙版
  • pandas.DataFrame 的矢量化集成

    我有一个DataFrame力 位移数据 位移数组已设置为DataFrame索引 列是我针对不同测试的各种力曲线 如何计算完成的功 即 曲线下面积 我在看numpy trapz http docs scipy org doc numpy 1