Выбор ответа Senior Чтение и запись данных обновлено
Где считать: в базе или в pandas
Вопрос
Нужна выручка по дням за год из таблицы на 2 млрд строк в PostgreSQL. Аналитик пишет pd.read_sql("SELECT * FROM orders", engine) и считает в pandas. Что лучше?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сделать GROUP BY по дню в SQL и вытащить 365 строк. Агрегат выгоднее посчитать там, где лежат данные: база использует индексы и не гонит 2 млрд строк по сети. pandas работает в памяти одной машины и такую таблицу не поднимет. chunksize в CSV или в readsql спасёт память, но всё равно…
Варианты ответа
- Так и надо: pandas быстрее базы
- Выгрузить в CSV и прочитать
chunksize - Сделать
GROUP BYпо дню в SQL и вытащить 365 строкправильный ответ - Читать через
read_sqlсchunksize, чтобы не упасть по памяти
Разбор
Агрегат выгоднее посчитать там, где лежат данные: база использует индексы и не гонит 2 млрд строк по сети. pandas работает в памяти одной машины и такую таблицу не поднимет. chunksize в CSV или в read_sql спасёт память, но всё равно протащит все строки через сеть и Python.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Чтение и запись данных»
- Как прочитать большой файл в pandas
- Файл больше памяти в pandas
- Агрегат по кускам через chunksize
- Вложенный JSON заказов в таблицу
- Разбор выгрузки из Excel: sep, decimal, dtype
- Запятая в дробях при чтении CSV
- CSV для русского Excel
- read_csv для русской выгрузки