Преимущества pandas dataframe для обычной реляционной базы данных

13

В Data Science многие, кажется, используют фреймы данных pandas в качестве хранилища данных. Каковы особенности панд, которые делают его превосходным хранилищем данных по сравнению с обычными реляционными базами данных, такими как MySQL , которые используются для хранения данных во многих других областях программирования?

Хотя pandas предоставляет некоторые полезные функции для исследования данных, вы не можете использовать SQL и теряете такие функции, как оптимизация запросов или ограничение доступа.

Саймон Бём
источник
5
Панды это не хранилище данных. Выключите компьютер, и вашего информационного кадра там не будет. Панды для того, чтобы погрузиться в память. Это означает, что если он не помещается в память, он не будет работать. Но у него есть старший брат по имени Спарк, так что это не имеет большого значения. Большой брат фактически поддерживает SQL и оптимизацию запросов. См. Также pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Эмре,

Ответы:

8

Я думаю, что у предпосылки вашего вопроса есть проблема. Pandas не является «хранилищем данных» в том смысле, как это делает СУБД. Pandas - это библиотека Python для манипулирования данными, которые помещаются в памяти. Недостатки:

  • Панды не сохраняют данные. Он даже имеет (медленную) функцию TO_SQL, которая сохранит ваш фрейм данных pandas в таблице RDBMS.
  • Панды будут обрабатывать только результаты, которые помещаются в память, которую легко заполнить. Вы можете либо использовать dask, чтобы обойти это, либо работать с данными в СУБД (которая использует всевозможные приемы, такие как временное пространство) для работы с данными, которые превышают объем оперативной памяти.
CalZ
источник
2

Из панд ( Главная страница )

Библиотека анализа данных Python¶

pandas - это библиотека с открытым исходным кодом, лицензированная BSD, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных для языка программирования Python.

Хотя pandas, безусловно, может получать доступ к данным через SQL или из нескольких других методов хранения данных, его основная цель - облегчить использование Python для анализа данных.

Для этого у pandas есть различные методы, которые позволяют выполнять некоторые операции реляционной алгебры, которые можно сравнить с SQL.

Также Pandas обеспечивает легкий доступ к NumPy , который

является фундаментальным пакетом для научных вычислений с Python. Он содержит среди прочего:

  • мощный N-мерный массив объектов
  • сложные (вещательные) функции
  • инструменты для интеграции C / C ++ и кода Fortran
  • полезная линейная алгебра, преобразование Фурье и возможности случайных чисел
Стивен Раух
источник
2

В дополнение к принятому ответу:

Реляционные базы данных имеют большое количество байтов служебных данных для каждой строки (пример: этот вопрос ), которые используются для ведения бухгалтерии, сообщая нулевые значения, а не нулевые, обеспечивая стандарты, такие как ACID . Каждый раз, когда вы читаете / пишете столбец, будут прочитаны не только несколько байтов, представляющих значение этого столбца, но также будут доступны и обновлены эти байты учета.

Напротив, pandas (также R data.table) больше похож на хранилище столбцов в памяти. Один столбец - это просто массив значений, и вы можете использовать быстрые, вялые, векторизованные операции / списки, которые получают доступ только к тем значениям, которые вам действительно нужны. Просто для таблиц с несколькими примитивными столбцами реляционные базы данных в несколько раз медленнее для многих случаев использования данных.

Valentas
источник
2

Pandas - это инструмент для хранения данных в памяти. Это позволяет очень быстро выполнять очень большие расчеты для больших объемов данных.

SQL (обычно) постоянно хранит данные и является базой данных. Также возможно запустить базу данных SQL в памяти, которая может быть быстрее, чем использование панд, таких как SQLite.

Генри
источник
0

SQL позволяет вам сохранять и выполнять много разных транзакций отношений и всегда иметь его в доступе для различных целей. По сути один источник правды или место, куда можно пойти. Там наверняка есть над головой. Однако некоторые анализы могут быть очень сложными и требуют значительного количества операций на основе набора, которые могут очень быстро превратить даже небольшой набор данных в большой. У меня были процессы обработки данных, которые имеют более 2000 запросов, которые обрабатывают терабайты менее чем за 5 минут и могут забить миллиарды записей для прогнозирующей модели в конце, а Python и NumPy забрали часть набора данных за 10 раз как хранилище реляционных данных и подавать его до уровня представления.

Дополнительный момент, если вы делаете это в облаке, убедитесь, что у вас есть динамический экземпляр, который может масштабировать его память. С SQL это все о наличии диска и достаточного количества вычислений, чтобы сделать это своевременно.

Я вижу много способов, которыми они могут работать в синергии. Pandas была разработана для многих задач по обработке данных. Некоторые работы по науке данных - это то, для чего были созданы RDB. Используйте оба в балансе.

Это все о правильном инструменте, чтобы сделать правильную работу.

Уильям Комп
источник