.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
答案 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