Как увеличить скорость Pandas и обработать наборы данных из 10 миллионов строк за миллисекунды

Ускорение Pandas и обработка 10-миллионных данных в миллисекундах

Используйте Pandas так, как задумано

Изображение мною сделанное с помощью Midjourney

Введение

“Отлично… еще одна статья о том, как сделать Pandas в n раз быстрее”.

Я думаю, что я говорил это бесчисленное количество раз в течение последних трех лет, в которые я использую Pandas. Самая последняя, которую я видел, гласила “сделайте Pandas в 71 803 раза быстрее”.

Но я не дам вам такую обещание. Я просто покажу вам, как использовать Pandas наиболее быстрым способом. Потому что вы не можете ускорить то, что уже быстро.

Это имеет смысл, не так ли?

Позвольте мне задать вам вопрос. Какую руку вы используете, когда я говорю “Коснитесь свего правого уха”. Конечно, правую руку. Вы не коснулись бы своего правого уха, положив левую руку на голову. Это было бы странно.

Точно также, использование функций, которые документация Pandas явно указывает как медленные, вместо наиболее быстрых методов, было бы также странно.

Вот почему в этой статье будут показаны лучшие практики некоторых наиболее распространенных операций по манипулированию данными в Pandas. Вы можете даже рассматривать эти лучшие практики как “здравый смысл”, потому что именно так разработчики Pandas задумывали использование своей библиотеки.

Эффективный индексирование

Начнем с самых базовых операций. Конкретнее, мы рассмотрим самый быстрый способ выбора строк и столбцов. Как вы знаете, в Pandas есть два оператора индексации – loc и iloc. Хотя их разница не будет существенной для небольших наборов данных, она будет заметна при увеличении размера данных.

Во-первых, для выбора одной или нескольких строк iloc работает быстрее.

В отличие от этого, loc лучше подходит для выбора столбцов по их меткам:

>>> tps.loc[:, ["f1", "f2", "f3"]]

Для выборки столбцов или строк встроенная функция sample является самой быстрой. Вы можете подумать, что выборка с использованием случайных индексов с помощью NumPy…