Это очень зависит от вашего контекста.
Если вы создаете задание, которое читает некоторые данные, применяет преобразования поверх этих данных, а затем записывает их в выходной файл / корзину, то обычно используются кадры данных (например, панды, если они помещаются в память или pyspark, если его нужно распространять). Одна из причин этого состоит в том, что есть некоторые оптимизации, которые эти библиотеки делают скрытыми при применении таких преобразований, которые делают вашу работу более эффективной.
С другой стороны, если вы создаете более сложное приложение с множеством объектных иерархий или что-то, что более близко моделирует реальный мир, где вы чувствуете, что четко определенные объекты сделают ваш код легче для чтения, тогда объектный подход имеет больше смысла.
В конце концов, все сводится к стилю; и в некотором смысле функциональное программирование против объектно-ориентированного программирования. Питон находится в центре этих миров, поэтому вполне естественно, что будет какой-то конфликт. Там нет правильного или неправильного пути.