pandas.DataFrame.sum()在物理上如何工作?

时间:2019-01-14 16:32:01

标签: python pandas dataframe sum

.sum()中的pandas.DataFrame方法是如何工作的?

我正在计算每个员工的薪水占所有薪水总额的比例。

CSV有33,000行。

下面的函数add_proportion逐行读取每个工人的薪水,然后对所有行除以salary.sum()

问题:在这33,000个周期中的每个周期中,salary.sum()自己进行33,000个周期来一次又一次地计算总数吗?

询问,因为在这种情况下,循环总数将为10亿(33,000乘以33,000),这将导致某种程度的延迟。但是没有延迟,该功能可立即运行。

因此,.sum()仅在第一个周期内计算总数,然后重用该值吗?

谢谢。

import pandas as pd

staff = pd.read_csv('staff.csv', names = ['name', 'salary'])

def add_proportion(group):
    group['proportion'] = salary / salary.sum()
    return group

2 个答案:

答案 0 :(得分:0)

pandas在后​​台使用numpy。在numpy中,在大小不同的数组之间应用操作的行为称为broadcasting

这取决于您如何调用add_proportion函数,但是对sum 的调用应该仅在整个数据帧中发生一次(如果正在执行,则每个组一次)例如groupby(...).apply(add_proportion)

答案 1 :(得分:-1)

每个和都是线程,这意味着所有和都是同时进行的,它们是并行的。

限制是您的RAM,用于确定允许具有的并行进程数。

有关更多信息,我会建议https://medium.com/@bfortuner/python-multithreading-vs-multiprocessing-73072ce5600b