Когда используется цикл for, python выполняет итерацию по каждому объекту, в данном случае по строке df. Он идентифицирует класс объекта (массив numpy), оценивает, является ли применяемый метод (итерация) приемлемым. Затем он перебирает каждый объект в строке. Как только он находит объект, он идентифицирует тип данных и проверяет связанные методы. Затем он анализирует метод, применяемый к ним, он применяется (или выдает ошибку, если не может), а затем переходит к следующему объекту и начинает все сначала. Для каждого объекта выполняется множество операций, что фактически убивает скорость. Методы, описанные в этой статье, сокращают количество необходимых шагов.
Комментарий недоступен
Ну кажется большинство пандасистов знают что векторные операции быстрей чем любая итерация по данным :)
Просто иногда пишешь просто работающее решение, а потом уже начинаешь его ускорять если это критический важно
И еще был опыт: тоже увлекся пандасом, и его быстрыми векторными операциями и казалось бы быстрей уже не напишешь обработку данных, но...
Но, когда тебе надо для обработки затянуть в память несколько гигабайт данных из файла CSV, тут появляется нюанс. Оказывается быстрей обработать такой файл построчно, итерационно, не затаскивая в память целиком в виде DataFrame. Мне кажется я ускорил программу раза в три, по сравнению с пандасом. А если еще прикрутить асинхронную обработку и сохранение данных, то еще быстрей получится (но не факт).
Комментарий недоступен
Спасибо за материал!
Спасибо за материал!
Для себя сделал вывод, что Pandas больше про понятное представление данных в табличной виде, что актуально для всяких ЮпитерНоутбуков и аналогов. "Под капотом" проекта от него толку нет. Являясь самоучкой, изначально использовал Панду в одном из своих проектов. Код писать не буду, но результаты были примерно следующие: 1:30 при использовании Pandas, 7 секунд на чистых списках, и 5 секунд на массиве Numpy. Алгоритмы везде были идентичные, с поправкой на тип данных. Теперь весь проект переписываю в Numpy. Да, не так удобно (приходится по индексам ориентироваться, а не по именам), но гораздо быстрее работает. А с Пандой пусть играются любители Юпитера и Матплотлиба
Комментарий недоступен