小编Dou*_*oug的帖子

Pandas数据帧 - python中的速度:数据帧操作,numba,cython

我有一个约200万行的财务数据集.我想将其作为pandas数据框导入,并通过利用一些现有列值应用行方式函数来添加其他列.为此,我不想使用任何技术,如并行化,python的hadoop等,所以我面临以下问题:

我已经这样做了类似于下面的例子,性能很差,~24分钟才能通过~20K行.注意:这不是实际功能,它完全由弥补.对于其他列,我正在计算各种财务选项指标.我怀疑慢速主要是由于迭代所有行,而不是真正的函数本身,因为它们相当简单(例如计算期权的价格).我知道我可以加速函数本身的一些小事情,比如使用erf而不是正态分布,但为了这个目的,我想专注于整体问题本身.

def func(alpha, beta, time, vol):
    px = (alpha*beta)/time * vol
    return px

# Method 1 (could also use itertuples here) - this is the one that takes ~24 minutes now
for row in df.iterrows():
    df['px'][row] = func(alpha, beta, df['time'][row], df['vol'][row])
Run Code Online (Sandbox Code Playgroud)

我也试过矢量化这个但是继续得到关于'不能序列化浮点'或类似的错误.

我的想法是尝试以下方法之一,我不确定哪个理论上最快?是否存在与运行这些非线性相关的非线性,因此1000行的测试不一定表明哪一行在所有200万行中最快?可能是一个单独的问题,但我应该专注于更有效的方法来管理数据集而不是仅仅专注于应用这些功能?

# Alternative 1 (df.apply with existing function above)
df['px'] = df.apply(lambda row: func(alpha, beta, row['time'], row['vol']), axis=1)

# Alternative 2 (numba & jit)
@jit
def func(alpha, beta, time, vol):
    px = (alpha*beta)/time * …
Run Code Online (Sandbox Code Playgroud)

python performance cython pandas numba

2
推荐指数
1
解决办法
920
查看次数

添加excel公式作为范围的一部分

我希望添加一个公式作为范围参考的一部分.以下是一个例子:

= sumif(F2:间接("F"和B5),......等等......)

基本上我有很多公式引用一系列数据,这些数据总是在行数方面发生变化.目标是随着行号的变化,用户只需输入新的行号,所有公式都将自动更新.单元格B5包含行号,是用户将更新的输入单元格.

我已经尝试了许多不同的方法,从INDIRECT,CELL到其他方法,并且无法使其工作.我已将B5格式化为文本,数字和常规,但它仍然无法正常工作.

关于如何使这项工作的任何想法?我在其他论坛上看到了类似的问题,并尝试了他们的方法,但除了#VALUE之外什么都没有.

excel formula

1
推荐指数
1
解决办法
128
查看次数

标签 统计

cython ×1

excel ×1

formula ×1

numba ×1

pandas ×1

performance ×1

python ×1