В Data Science многие, кажется, используют фреймы данных pandas в качестве хранилища данных. Каковы особенности панд, которые делают его превосходным хранилищем данных по сравнению с обычными реляционными базами данных, такими как MySQL , которые используются для хранения данных во многих других областях программирования?
Хотя pandas предоставляет некоторые полезные функции для исследования данных, вы не можете использовать SQL и теряете такие функции, как оптимизация запросов или ограничение доступа.
Ответы:
Я думаю, что у предпосылки вашего вопроса есть проблема. Pandas не является «хранилищем данных» в том смысле, как это делает СУБД. Pandas - это библиотека Python для манипулирования данными, которые помещаются в памяти. Недостатки:
источник
Из панд ( Главная страница )
Хотя pandas, безусловно, может получать доступ к данным через SQL или из нескольких других методов хранения данных, его основная цель - облегчить использование Python для анализа данных.
Для этого у pandas есть различные методы, которые позволяют выполнять некоторые операции реляционной алгебры, которые можно сравнить с SQL.
Также Pandas обеспечивает легкий доступ к NumPy , который
источник
В дополнение к принятому ответу:
Реляционные базы данных имеют большое количество байтов служебных данных для каждой строки (пример: этот вопрос ), которые используются для ведения бухгалтерии, сообщая нулевые значения, а не нулевые, обеспечивая стандарты, такие как ACID . Каждый раз, когда вы читаете / пишете столбец, будут прочитаны не только несколько байтов, представляющих значение этого столбца, но также будут доступны и обновлены эти байты учета.
Напротив, pandas (также R data.table) больше похож на хранилище столбцов в памяти. Один столбец - это просто массив значений, и вы можете использовать быстрые, вялые, векторизованные операции / списки, которые получают доступ только к тем значениям, которые вам действительно нужны. Просто для таблиц с несколькими примитивными столбцами реляционные базы данных в несколько раз медленнее для многих случаев использования данных.
источник
Pandas - это инструмент для хранения данных в памяти. Это позволяет очень быстро выполнять очень большие расчеты для больших объемов данных.
SQL (обычно) постоянно хранит данные и является базой данных. Также возможно запустить базу данных SQL в памяти, которая может быть быстрее, чем использование панд, таких как SQLite.
источник
SQL позволяет вам сохранять и выполнять много разных транзакций отношений и всегда иметь его в доступе для различных целей. По сути один источник правды или место, куда можно пойти. Там наверняка есть над головой. Однако некоторые анализы могут быть очень сложными и требуют значительного количества операций на основе набора, которые могут очень быстро превратить даже небольшой набор данных в большой. У меня были процессы обработки данных, которые имеют более 2000 запросов, которые обрабатывают терабайты менее чем за 5 минут и могут забить миллиарды записей для прогнозирующей модели в конце, а Python и NumPy забрали часть набора данных за 10 раз как хранилище реляционных данных и подавать его до уровня представления.
Дополнительный момент, если вы делаете это в облаке, убедитесь, что у вас есть динамический экземпляр, который может масштабировать его память. С SQL это все о наличии диска и достаточного количества вычислений, чтобы сделать это своевременно.
Я вижу много способов, которыми они могут работать в синергии. Pandas была разработана для многих задач по обработке данных. Некоторые работы по науке данных - это то, для чего были созданы RDB. Используйте оба в балансе.
Это все о правильном инструменте, чтобы сделать правильную работу.
источник