Ускорьте код Pandas в 120 раз — Реальные методы ускорения
Pandas - это популярная и надёжная библиотека анализа данных на Python. Она предоставляет структуры данных и функции для управления числовыми таблицами и данными временных рядов. Однако, при работе с огромными наборами данных, Pandas иногда может стать медленным и неэффективным инструментом. В этой статье мы рассмотрим, как мы можем использовать встроенные функции Python и Pandas для более быстрого выполнения вычислительных задач.
Постановка проблемы и предварительные условия
Для анализа давайте сгенерируем поддельные данные о человеке, связанные с возрастом, контактными данными, циклом сна и т.д., и свяжем их с функцией, для которой мы можем сгенерировать миллионы строк, определив размер 10 миллионов, который имеет объём памяти около 460 МБ.
Постановка задачи: Нам нужно сгенерировать функцию, которая предоставляет вознаграждение человеку на основе этих условий:
- Если среднее время сна составляет ≥ 6 часов, а годовой доход составляет от 5000 до 10000 долларов, мы дадим ему / ей бонус в размере 15% от текущего дохода.
- Если их возраст составляет от 60 до 90 лет, а их пол женский, то бонус в размере 20%, в противном случае, если пол мужской, то 18%
- по умолчанию будет предоставлена прибавка в размере 10% в дополнение к вышеуказанным условиям.
Ниже представлен код, в котором реализована система вознаграждения для каждого человека:
Метод 1: Цикл (Beginner)
Первый метод заключается в циклическом переборе всех строк с использованием цикла For, который будет протестирован на размер от 10 до 1 миллиона (все числа должны быть кратны 10).
Метод 2: Apply (Intermediate)
Второй метод заключается в использовании встроенной функции apply, которая автоматически перебирает строки для получения тех же результатов. Можно заметить, что данный метод в 51 раз быстрее, нежели предыдущий.
Метод 3: Векторизация (Advanced)
Третий метод, использующий векторизацию, преобразует вашу функцию в векторизованную функцию, которая может легко выполнять параллельные вычисления. Этот метод в 120 раз быстрее, чем итеративный метод, и в 24 раза быстрее, чем функция apply.
Заключение
Если сравнить все 3 метода, представленные в этой статье, можно сделать вывод, что каждый последующий метод будет эффективнее, полезнее и быстрее (а также сложнее!).
В заключение, Pandas - это мощная библиотека, которая может значительно ускорить задачи анализа данных. Используя возможности метода векторизации, Pandas может выполнять вычисления намного быстрее, чем стандартные методы, на очень больших наборах данных.
Статья была взята из этого источника: