Python и Pandas: делаем быстрее

Давно в блоге не было материалов для любителей Python. В прошлом году я провёл эксперимент: предложил студентам усовершенствовать свои фрагменты кода для предобработки данных. В некоторых местах я специально писал неоптимально, а в некоторых думал, что оптимально… сейчас расскажу, что из этого получилось. При чтении старайтесь не пролистывать быстро вниз: попробуйте догадаться, какие из предложенных вариантов кода самые быстрые.

bystro.jpg

Читать далее

Считаем категории

Одна из самых частых мелких подзадач, которые мне приходится делать при анализе данных, — для категориального признака определить число вхождений для каждой категории. Есть много способов её решения — я постарался описать всё, что пришли в голову на языке Python. Есть методы, в которых эту подзадачу приходится решать много раз на данных большого объёма, поэтому время решения критично… а ещё многие студенты не знают о стандартных способов решения этой задачи.

count Читать далее

Случайный лес (Random Forest)

Случайный лес — один из самых потрясающих алгоритмов машинного обучения, придуманные Лео Брейманом и Адель Катлер ещё в прошлом веке. Он дошёл до нас в «первозданном виде» (никакие эвристики не смогли его существенно улучшить) и является одним из немногих универсальных алгоритмов. Универсальность заключается, во-первых, в том, что он хорош во многих задачах (по моим оценкам, 70% из встречающихся на практике, если не учитывать задачи с изображениями), во-вторых, в том, что есть случайные леса для решения задач классификации, регрессии, кластеризации, поиска аномалий, селекции признаков и т.д.

random_forest.jpg Читать далее

Питон (Python)

Сейчас практически все, кто занимается анализом малых данных, делают это с помощью Питона… а ведь ещё 5 лет назад не было пакетов типа scikit-learn и единственной средой с реализованными бустингом, случайным лесом и т.п. оставался R (+ RStudio, т.к. никаких ноутбуков тоже не было). Или приходилось реализовывать все алгоритмы «с нуля», что я и делал в том же Matlab-е. Ещё были разные программки на С/С++ типа libSVM, SVMlight

%d0%bf%d0%b8%d1%82%d0%be%d0%bd

Читать далее

Python: категориальные признаки

Увидел несколько «немного неуклюжих» программ на Питоне, в которых авторы возились с категориальными признаками и решил написать небольшую заметку: как делать базовые вещи в несколько строк. Все примеры выложены на гитхабе, а ниже пояснения.

contries

Читать далее

NumPy — делаем быстрее

Чтобы ускорить выполнение кода на интерпретируемом языке программирования, следуют известным советам по избеганию использования циклов, своевременному выделению памяти, применению параллелизации и встроенных средств линейной алгебры. Для М-языка (Matlab) все советы можно найти в гл.15 уже старенькой книги автора. В принципе, они все годятся и для библиотеки NumPy языка Python, поскольку она практически копирует функционал Матлаба. Но кроме самих советов есть некоторые тонкости их использования. Сейчас на одном конкретном примере покажем, как можно ускорить выполнение кода.

speed

Читать далее

Знакомство с Pandas (слайды)

Для магистров ВМК МГУ подготовил презентацию по пакету Pandas. С удивлением обнаружил, что по очень популярной среди питонистов панде совсем нет образовательных презентаций. Например, на www.slideshare.net нет ни одного материала по этому пакету (только среди обзоров пакетов для аналитиков данных). Поэтому исправил данный недостаток и закачал туда свою презенташку. Читать далее

Pandas

Чтобы в Питоне работать с данными, в которых не все признаки вещественные, приходится использовать пакет Pandas. В нём реализован тип дата-фрейм (который соответствует аналогичному в R). По сравнению с R здесь всё менее интуитивно, например, специфическая индексация элементов дата-фрейма (которую, впрочем, нетрудно освоить). Очень хороших учебных пособий по Панде нет, но на станице пакета размещено pdf-описание, в котором, в принципе, всё необходимое есть. Проще на основе описания создать себе ноутбук с подсказками основных функций. Мой лежит здесь.

Мир программирования (1)

Обзор некоторых (в основном, свежих) материалов по языкам R и Python. Так получилось, что большая часть материалов — для новичков.

  • Learn X in Y minutes (уровень: начальный и средний) Хорошие и небольшие обзоры по языкам программирования.
  • Do you know Python? (уровень: знать Питон) Неплохой тест на знание языка Питон.
  • 5 Best Python Libraries for Data Science (уровень: начальный) Перечень основных библиотек для датамайнера со ссылками на лучшие туториалы.
  • An Introduction to Statistics  (уровень: начальный) Ресурс по статистике, но есть примитивный справочник по Питону для новичков.
  • 14 Best Python Pandas Features (уровень: знать Питон) Небольшой, но очень хороший обзор основных функций пакета Pandas.
  • usefulr.wordpress.com (уровень: средний) Ещё один блог о языке R.
  • R Cheat Sheets (уровень: знать R) Подсказки по языку R, интересный материал по графике в R.
  • The Grammar of Data Science: Python vs R (уровень: средний) Сравнение R и Python на примере одной задачи.