С подобными запросами нужно соблюдать определённую осторожность. При считывании данных в DataFrame не напрямую из базы данных, а, например, из csv-файла, часто возникает ошибка несоответствия типов. Это может быть вызвано тем, что где-то неверно по разделителям считался датасет, во время манипуляции с данными произошла замена значений в ячейке или в исходном файле оказалось несколько незаполненных ячеек. Все описанные случаи можно запросто не заметить и словить ошибку. Чтобы узнать тип данных колонки, например, ‘Ticker’, в DataFrame достаточно в консоли прописать titanic_df.Ticket или titanic_df[‘Ticket’] и увидеть следующую информацию: Name: Ticket, Length: 40000, dtype: int64. Тип данных в столбце ‘Ticket’ — int64. Если известно, что во всех ячейках колонки DataFrame хранится просто int и при преобразовании int64 к int значения не обрежутся, то все что нужно, чтобы исправить ошибку, это выполнить преобразование типов с помощью запроса: titanic_df[‘Ticket’].astype(‘int’). Либо int’овое значение «30 000» преобразовать к NumPy-типу следующим образом: numpy.int64(30000). Имея опыт работы с данной библиотекой, Data Scientist будет знать, как исправлять подобного рода ошибки, а вот на начальных этапах это может оказаться большим затруднением в работе.
Pandas’у необходимо время для сохранения датасета в объект типа DataFrame
А что там с требуемыми вычислительными ресурсами? Сдаётся мне Pandas потребует колоссальное количество оперативки там где MySQL будет вполне сносно работать на очень скромном железе.
Если посредством MySQL вы лишь обращаетесь к базам данных, то сам запрос обрабатывается СУБД, и вам предоставляется только готовый результат. Поэтому сравнивать затраты оперативной памяти не совсем корректно. Но, если не брать в расчёт все затраты СУБД на все операции, то вы правы.
Но помимо самого запроса, данные, обёрнутые в Pandas Dataframe. можно использовать в Python, изменить их и ообратиться снова, как к самой обычной таблице, без сохранения её обратно в БД. В этом заключается основное преимущество Pandas над работой через СУБД.
Уточним у автора и вернемся с ответом :)
Устал листать Вашу ленту публикаций и читать статьи, завтра продолжу)) Для себя нашёл очень много нужного и полезного, особенно на Питоне (кое что интересное и на моей сакральной Яве есть). Автор, огромное Вам спасибо!
Нашей команде очень приятны ваши слова :) Будем стараться быть полезными и дальше )
1) Срез по столбцам делается проще: df[['col_name_1', 'col_name_1']]
2) Почему-то забывают про сводные таблицы в панде https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html
3) А с помощью библиотеки matplotlib, данные сразу можно визуализировать в виде графиков.
1) Вы правы, вызывать несколько колонок таким образом и правда проще. Стоило более подробно остановиться на всех возможностях обращения к элементам Dataframe через loc
2) Тоже хороший комментарий, можно описать возможность реализации агрегированных функций из SQL пандасской pivot_table.
3) В посте не стояло цели описать все способы работы с датафреймами, я скорее пытался показать аналогичные sql-запросам методы pandas. Pandas.DataFrame - очень удобный инструмент для работы с табличными данными, а что делать с ними дальше уже зависит от задачи.
Благодарю вас за комментарий )