Mito — это графический интерфейс для быстрой работы с наборами данных, который по вашим действиям создаёт код на Python. Даже если вы работаете с Python много лет, наблюдая за кодом Mito, вы можете узнать что-то новое, при этом понятный код на много строк можно получить всего за несколько кликов. Подробности рассказываем, пока у нас начинается флагманский курс Data Science.


Пару недель назад я написал статью о Bamboolib, которая стала популярной. Её очень хорошо приняли: десятки тысяч просмотров за первую неделю. После я хотел перейти от библиотек Python к другим темам, связанным с наукой о данных, если не найду что-то впечатляющее. И нашёл Mito. Я уже слышал о ней, но проверить так и не довелось. Недавно решил попробовать, и она впечатляет!

Mito экономит время

Mito и Bamboolib имеют много общего, например графический интерфейс, облегчающий выполнение задач. Обе библиотеки создают код на Python, который можно копировать и использовать везде, даже если Mito не установлена.

Установка Mito

Процесс установки очень прост. Ради безопасности рекомендую создать среду для Mito. На сайте Mito показано, как это сделать на Python. Для этого копируем и вставляем код в терминал.

Для Mac:

python3 -m venv mitoenv
source mitoenv/bin/activate
python -m pip install mitoinstaller
python -m mitoinstaller install

Для Windows:

python3 -m venv mitoenv
mitoenv\Scripts\activate.bat
python -m pip install mitoinstaller
python -m mitoinstaller install

Решили использовать виртуальную среду Conda? Тогда скопируйте и вставьте этот код:

conda create -n mitoenv python=3.8
conda activate mitoenv
python -m pip install mitoinstaller
python -m mitoinstaller install

Теперь всё готово. Внимание: Mito создаст файл JupyterLab notebook со стартовым кодом. JupyterLab notebook можно вызвать, набрав в терминале  jupyter lab. Займёмся делом.

Первые шаги

Импортируем библиотеку строкой import mitosheet, и запускаем её командой mitosheet.sheet(). Вот результат:

Теперь импортируем набор данных. Нажимаем import и находим файл. Для этого демо воспользуемся набором Top Video Games 1995–2021 Metacritic на Kaggle. Mito покажет, что можно делать с его помощью:

Подготовка данных

Изменение типа данных

Изменить тип данных в Mito проще простого. Нажимаем на тип данных прямо под именем столбца и выбираем новый тип. В этом примере я изменю строку на дату и время. Указывающее на тип строки сочетание Abc изменится на значок календаря.

Здесь нельзя выбрать формат даты и времени, поэтому пишу специально для разработчиков Mito: было бы неплохо её добавить. И похоже, что столбец user_review — это строка. Исправим тип на число с плавающей точкой:

В ячейку под графическим интерфейсом добавилась строка кода. Это соответствующие вашим действиям комментарии и код, его удобно передавать людям, у которых Mito не установлена.

Bamboolib автоматически распознаёт, что у столбца user_review должен быть тип числа с плавающей точкой, а не целое число. Mito этого не делает. Поэтому, если попытаться изменить столбец с цифрами на целое число, возникнет ошибка. Но это проблема небольшая.

Переименование столбцов

Поменять имя столбца тоже просто. Нажимаем на имя столбца и редактируем. Когда-то я работал над проектом, где пришлось менять имена 200 столбцов. Это было очень долго. Сколько времени я сэкономил бы с Mito!

Удаление столбцов

Выбираем столбец и нажимаем на DEL COL. Вот и всё. Есть проекты, где надо удалять несколько столбцов. В Mito это делается за пару кликов, при этом имя каждого столбца вводить не нужно.

Отмена действий

Mito настолько упрощает удаление столбцов, что можно удалить их больше, чем надо. Просто нажимаем UNDO и отменяем любые действия. Перестарались с UNDO? Нажимаем на REDO и отменяем отмену. Извините, я должен был это сказать.

Работа с несколькими фреймами одновременно

Ещё одна очень крутая особенность — одновременная работа с несколькими фреймами данных. Есть два способа. Нажимаем IMPORT и загружаем файлы с компьютера или, если фреймы данных есть в блокноте, добавляем их имена в скобках:

mitosheet.sheet(df1, df2)

Для примера я создал два фрейма данных: один с user_review > 9, другой с user_review < 9.

Преобразование данных

Фильтрация данных

Нажимаем на значок воронки и выбираем, что фильтровать. В примере ниже я фильтрую игры, в которых user_review больше 9,5. Можно создать группы фильтров с выбором нескольких условий.

Сводная таблица

Даже у профессионалов группировка данных в Python может занять какое-то время. К примеру, очень полезна для анализа данных функция groupby(). При этом создать один-два groupby() — ещё куда ни шло. Но делать это целый день муторно.

В Mito опции groupby() нет, зато есть pivot_table(), которая работает иначе. А именно:

  • Функция groupby() создаст таблицы, где заданные измерения помещаются в столбцы, а строки создаются для каждой комбинации этих измерений.

  • Функция   pivot_table() позволяет объединять данные в большее количество форм.

Создадим сводную таблицу нажатием на PIVOT. Выберем столбцы, по которым нужна группа, и статистику. Вот и всё! В примере ниже я группирую данные по платформе, а затем получаю среднее значение meta_score, счётчик имён и среднее значение user_review:

Вот код, созданный Mito для нашей pivot_table():

# Pivoted all_games_csv into df2
unused_columns = all_games_csv.columns.difference(set(['platform']).union(set([])).union(set({'name', 'user_review', 'meta_score'})))
tmp_df = all_games_csv.drop(unused_columns, axis=1)
pivot_table = tmp_df.pivot_table(
    index=['platform'],
    values=['meta_score', 'name', 'user_review'],
    aggfunc={'meta_score': ['mean'], 'name': ['count'], 'user_review': ['mean']}
)

При этом группа находится в новой вкладке, поэтому можно сравнить результаты:

Создание условных столбцов

Создадим новый столбец, указывающий, превышает ли значение столбца user_review 9. Нажимаем на любое значение в столбце user_review, затем на ADD COL и набираем =IF(user_review,'Yes', 'No')

Очень похоже на Excel:

Вот созданный Mito код:

all_games_csv.rename(columns={"new-column-1inv": "above_9"}, inplace=True)
all_games_csv['above_9'] = IF(all_games_csv['user_review'] > 9, 'Yes','No')

Я не знал, что можно использовать IF, как это делается в коде выше. Обычно я работаю с lambda().

Просмотр данных

Просмотр данных интуитивно понятен. Нажимаем на столбец, затем на значок фильтра и на Summary. Здесь показано распределение данных и кое-что из описательной статистики: среднее значение, стандартное отклонение, количество null и т. д.:

Это применимо для числовых и категориальных значений:

Визуализация данных

Можно создавать простые графики и генерировать соответствующий код. Для этого нажимаем на GRAPH, затем выбираем тип графика и его оси:

На сегодня всё. Поработать с Mito и научиться решать проблемы бизнеса вы сможете на наших курсах:

Узнайте подробности акции.

Другие профессии и курсы

Комментарии (1)


  1. stas_smith
    18.12.2021 17:31

    Либа классная, спасибо!

    Я не знал, что можно использовать IF, как это делается в коде выше. Обычно я работаю с lambda()

    Без mito использовать IF увы не получится. Что бы оно заработало, в начале придется импортировать через from mitosheet import * (как в генерируемом коде), ну или как минимум через from mitosheet import IF.