{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог об аналитике, визуализации данных, data science и BI, заметки с тегом: pandas-profiling",
    "home_page_url": "http:\/\/test.leftjoin.ru\/tags\/pandas-profiling\/",
    "feed_url": "http:\/\/test.leftjoin.ru\/tags\/pandas-profiling\/json\/",
    "icon": "http:\/\/test.leftjoin.ru\/user\/userpic@2x.jpg",
    "author": {
        "name": "Николай Валиотти",
        "url": "http:\/\/test.leftjoin.ru\/",
        "avatar": "http:\/\/test.leftjoin.ru\/user\/userpic@2x.jpg"
    },
    "items": [
        {
            "id": "60",
            "url": "http:\/\/test.leftjoin.ru\/all\/pandas-profiling-2\/",
            "title": "Обзор библиотеки pandas-profiling на примере датасета Superstore Sales",
            "content_html": "<p>Перед тем как работать с данными, необходимо составить представление, с чем мы имеем дело. В материале будем рассматривать датасет SuperStore Sales, а именно его лист <i>Orders<\/i>. В нём собраны данные о покупках клиентов канадского интернет-супермаркета: идентификаторы заказа, товаров, клиента, тип доставки, цены, категории и названия продуктов и прочее. Подробнее с датасетом можно ознакомиться на <a href=\"https:\/\/github.com\/PacktPublishing\/Tableau-10-Best-Practices\/blob\/master\/Chapter%205\/Sample%20-%20Superstore%20Sales%20(Excel).xls\">GitHub<\/a>. Например, если мы создадим из датасета DataFrame, можем воспользоваться стандартным методом <span class=\"inline-code\">describe()<\/span> библиотеки pandas для описания данных:<\/p>\n<pre class=\"e2-text-code\"><code>import pandas as pd\r\n\r\ndf = pd.read_csv('superstore_sales_orders.csv', decimal=',')\r\ndf.describe(include='all')<\/code><\/pre><p>И во многих случаях получим такую кашу:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/1-13.png\" width=\"984\" height=\"427\" alt=\"\" \/>\n<\/div>\n<p class=\"note\">Код библиотеки доступен на <a href=\"https:\/\/github.com\/pandas-profiling\/pandas-profiling\">GitHub<\/a><\/p>\n<p>Если постараться и потратить время, можно извлечь полезную информацию. Например, можем узнать, что люди чаще выбирают «Regular air» в качестве доставки или что большинство заказов поступило из провинции Онтарио. Тем не менее, есть и другое решение, которое подробнее и качественнее описывает датасет — библиотека pandas-profiling. Вы отдаёте ей DataFrame, а она генерирует html-страницу с подробным описанием сета данных:<\/p>\n<pre class=\"e2-text-code\"><code>import pandas_profiling\r\nprofile = pandas_profiling.ProfileReport(df)\r\nprofile.to_file(&quot;output.html&quot;)<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/2-15.png\" width=\"973\" height=\"621\" alt=\"\" \/>\n<\/div>\n<p>Всего Pandas Profiling возвращает 6 разделов: обзор датасета, переменные, отношения и корреляцию между ними, количество пропущенных значений и примеры из датасета.<\/p>\n<p class=\"note\">Web-версия отчёта доступна <a href=\"http:\/\/test.leftjoin.ru\/files\/superstore.html\">по ссылке<\/a><\/p>\n<h2>Обзор данных<\/h2>\n<p>Рассмотрим первый подраздел — «Overview». Библиотека собрала следующую статистику: количество переменных, наблюдений, пропущенных ячеек, дубликатов и общий вес файла. В колонке <span class=\"inline-code\">Variable types<\/span> описаны типы переменных: здесь 12 качественных и 9 числовых.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/3-13.png\" width=\"737\" height=\"356\" alt=\"\" \/>\n<\/div>\n<p>В подразделе «Reproduction» собрана техническая информация библиотеки: сколько времени занял анализ сета данных, версия библиотеки и прочее.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/4-8.png\" width=\"725\" height=\"293\" alt=\"\" \/>\n<\/div>\n<p>А подраздел «Warnings» сообщает о возможных проблемах в структуре датасета: сейчас он, например, предупреждает, что у поля «Order Date» — слишком большое количество уникальных значений.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/5-9.png\" width=\"712\" height=\"485\" alt=\"\" \/>\n<\/div>\n<h2>Переменные<\/h2>\n<p>Двигаемся ниже. В этом разделе содержится подробное описание каждой переменной: сколько возможных уникальных значений она принимает, сколько значений пропущено, сколько памяти занимает поле. Справа от статистики присутствует гистограмма с распределением значений поля.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/6-8.png\" width=\"722\" height=\"282\" alt=\"\" \/>\n<\/div>\n<p>При нажатии на <span class=\"inline-code\">Toggle details<\/span> откроется расширенная информация: квартили, медиана и прочая полезная описательная статистика. В остальных вкладках находятся гистограмма из основного экрана, топ-10 значений по частоте и экстремальные значения.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/7-4.png\" width=\"737\" height=\"404\" alt=\"\" \/>\n<\/div>\n<h2>Отношения переменных<\/h2>\n<p>В этом разделе визуализированы отношения переменных при помощи hexbin plot: выглядит это не очень очевидно и понятно. Особенно усугубляет положение отсутствие легенды к графику.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/Screenshot-2020-09-04-at-14.56.01.png\" width=\"716\" height=\"548\" alt=\"\" \/>\n<\/div>\n<h2>Корреляция переменных<\/h2>\n<p>В этом разделе представлена по-разному посчитананя корреляция переменных: например, первым указано r-value Пирсона. Заметно, что переменная Profit положительно коррелирует с переменной <span class=\"inline-code\">Sales<\/span>. При нажатии на <span class=\"inline-code\">Toggle correlation descriptions<\/span> открывается подробное пояснение к каждому коэффициенту.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/8-5.png\" width=\"739\" height=\"554\" alt=\"\" \/>\n<\/div>\n<h2>Пропущенные значения<\/h2>\n<p>Тут всё просто — bar chart, матрица и дендрограмма с количеством заполненных полей в каждой переменной. Заметно, что в колонке <span class=\"inline-code\">Product Base Margin<\/span> отсутствуют три значения.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/9-5.png\" width=\"739\" height=\"411\" alt=\"\" \/>\n<\/div>\n<h2>Примеры<\/h2>\n<p>И, наконец, последний раздел представляет первые и последние 10 значений в качестве примера кусков сета данных — аналог метода <span class=\"inline-code\">head()<\/span> из pandas.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/10-4.png\" width=\"661\" height=\"469\" alt=\"\" \/>\n<\/div>\n<h2>Что в итоге?<\/h2>\n<p>Библиотека уделяет больше внимания статистике, чем pandas: можно получить подробную описательную статистику по каждой переменной, посмотреть, как коррелируют между собой столбцы датасета. В совокупности с генерацией простого и удобного интерфейса библиотека строит полноценный отчёт по датасету, уже на основании которого можно делать выводы и сформировать представление о данных.<br \/>\nИ всё же, у библиотеки есть и минусы. На генерацию отчётов к громадным датасетам может уйти много времени вплоть до нескольких часов. Это безусловно хороший инструмент для автоматического проектирования, но он не может сделать полноценный анализ за вас и добавить больше деталей в графики. Кроме того, если вы только начали практиковаться с анализом данных лучше будет начать с pandas — это закрепит ваши навыки и придаст уверенности при работе с данными.<\/p>\n",
            "date_published": "2020-09-04T17:55:08+03:00",
            "date_modified": "2020-09-04T18:01:13+03:00",
            "image": "http:\/\/test.leftjoin.ru\/pictures\/2-14.png",
            "_date_published_rfc2822": "Fri, 04 Sep 2020 17:55:08 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "60",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "http:\/\/test.leftjoin.ru\/pictures\/2-14.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/2@2x.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/2@1.5x.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/1-13.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/2-15.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/3-13.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/4-8.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/5-9.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/6-8.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/7-4.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/Screenshot-2020-09-04-at-14.56.01.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/8-5.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/9-5.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/10-4.png"
                ]
            }
        }
    ],
    "_e2_version": 3365,
    "_e2_ua_string": "E2 (v3365; Aegea)"
}