Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Как взбодрить грустную панду? Используем Pandas в Production

Как взбодрить грустную панду? Используем Pandas в Production

Александр Швец (CTO @ Marilyn) @ Moscow Python Conf 2017
"Последние 7 лет я активно занимаюсь разработкой в области AdTech, а это всегда работа с данными, порой очень и очень большими. Также я читаю курс в Нетологии, посвященный исследованию данных на Python. На Moscow Python Conf я хочу поделиться с вами практикой промышленного использования Pandas и чем она отличается от теории. Ведь существует мнение, что Pandas предназначен только для исследовательских задач или для того, чтобы что-нибудь быстро прикинуть на коленке, так как он медленный и неповоротливый. Однако мы на своем опыте убедились, что Pandas можно и нужно использовать в бою, если вы работаете с большим количеством данных. В докладе я расскажу про оптимизацию Pandas для быстрой обработки больших массивов данных".
Видео: https://conf.python.ru/kak-vzbodrit-grustnuyu-pandu-ispolzuem-pandas-v-production/

Moscow Python Meetup
PRO

October 20, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. КАК ВЗБОДРИТЬ ГРУСТНУЮ ПАНДУ

    View Slide

  2. АЛЕКСАНДР ШВЕЦ

    View Slide


  3. Лениво панда
    Свернулась калачиком
    Инь и ян

    ХОККУ

    View Slide

  4. PANDAS
    • Библиотека для анализа данных
    • Позволяет Python порвать R и любые
    другие специализированные
    инструменты
    • От простых Excel-style задач до
    машинного обучения

    View Slide

  5. MARILYN
    НАШ ОПЫТ
    • 25 октября 2017 системе исполняется 5 лет
    • Pandas с 2013 года
    • Огромное количество внешних источников
    • “Терабайт слева, терабайт – справа!”

    View Slide

  6. ДО PANDAS
    • Ничего не помещается в память
    • Как же все медленно!

    View Slide

  7. PANDAS – БЫСТРАЯ?!
    • Построена на основе NumPy и Cython
    • Правильное и неправильное
    использование может давать разницу
    в разы

    View Slide

  8. C PANDAS
    • Меньше
    • Быстрее
    • Но недостаточно!

    View Slide

  9. ПРОБЛЕМА 1. ЗАГРУЗКА ИЗ CSV
    • Обратите внимание на то, какие типы
    получаются

    View Slide

  10. dtypes здорового человека dtypes курильщика

    View Slide

  11. РЕШЕНИЕ
    • Заранее вычищать/заменять все
    ненужное
    • Использовать конвертацию
    • pd.to_numeric
    • pd.to_datetime
    • …

    View Slide

  12. View Slide

  13. ПРОБЛЕМА 2. ИСПОЛЬЗОВАНИЕ
    ЛИШНЕЙ ПАМЯТИ
    • Многие операции могут создавать
    целые копии огромного DataFrame

    View Slide

  14. View Slide

  15. РЕШЕНИЕ
    • Не создавать копии, менять текущий
    фрейм
    • Использовать облегченные типы
    данных

    View Slide

  16. View Slide

  17. ПРОБЛЕМА 3. ПРОХОД ПО ФРЕЙМУ
    • Иногда очень хочется пройтись
    циклом по фрейму
    • Но нельзя!

    View Slide

  18. Очень медленно

    View Slide

  19. РЕШЕНИЕ
    • Векторизировать все операции!

    View Slide

  20. View Slide

  21. ПРОБЛЕМА 4. MERGE
    Основная польза от Pandas в
    объединении данных
    Но так ли бытро оно работает?

    View Slide

  22. View Slide

  23. РЕШЕНИЕ
    • Pandas в этом плане ничем не
    отличается от РСУБД
    • Индексы решают все!

    View Slide

  24. View Slide

  25. Может ли ClickHouse заменить Pandas?
    vs

    View Slide

  26. До: хранение в PostgreSQL

    View Slide

  27. После: хранение в Pandas

    View Slide

  28. https://github.com/mymarilyn/clickhouse-driver
    clickhouse-driver

    View Slide

  29. https://github.com/xzkostyan/clickhouse-sqlalchemy
    clickhouse-sqlalchemy

    View Slide

  30. ВЫВОДЫ
    • Pandas действительно
    производителен даже в Production
    • Но надо знать нюансы
    • Для некоторых задач есть все же более
    подходящие инструменты

    View Slide

  31. МЫ ЖДЕМ ТЕБЯ
    В MARILYN

    View Slide

  32. СПАСИБО
    fb.com/ashwets
    [email protected]
    Александр Швец
    директор по продукту

    View Slide