Как pandas.DataFrame.sum () работает физически? - PullRequest
0 голосов
/ 14 января 2019

Как метод .sum() в pandas.DataFrame физически работает?

Я рассчитываю пропорцию заработной платы каждого отдельного штатного работника к общей сумме всех зарплат.

CSV имеет 33 000 строк.

Функция ниже, add_proportion, идет строка за строкой и читает зарплату каждого работника, а затем делит ее на salary.sum() для всех строк.

Вопрос: В каждом из этих 33 000 циклов salary.sum() выполняет свои собственные 33 000 циклов для вычисления общего количества раз?

Запрашиваемая, потому что в этом случае общее количество циклов составило бы 1 миллиард (33000 умноженных на 33000), что должно привести к некоторой задержке. Но задержки нет, функция запускается мгновенно.

Следовательно, .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 голосов
/ 14 января 2019

pandas использует numpy под капотом. В numpy поведение применения операций между массивами разных размеров называется broadcasting .

Это зависит от того, как вы вызываете вашу add_proportion функцию, но вызов sum должен произойти только один раз для всего кадра данных (или один раз для группы, если вы делаете groupby(...).apply(add_proportion) для пример).

0 голосов
/ 14 января 2019

Каждая сумма является потоком, что означает, что все суммы сделаны одновременно, они распараллелены.

Ограничением является объем вашей оперативной памяти, который определяет количество параллельных процессов, которые вам разрешено иметь.

Для получения дополнительной информации, я бы посоветовал https://medium.com/@bfortuner/python-multithreading-vs-multiprocessing-73072ce5600b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...