02 октября 2019

Анализируй данные с помощью одной строки на Python

Пишу, перевожу и иллюстрирую IT-статьи. На proglib написал 140 материалов. Увлекаюсь Python, вебом и Data Science. Открыт к диалогу – ссылки на соцсети и мессенджеры: https://matyushkin.github.io/links/ Если понравился стиль изложения, упорядоченный список публикаций — https://github.com/matyushkin/lessons
Коротко о том, как упростить и сделать наглядным статистический анализ датасетов с помощью двух библиотек Pandas и одной строки кода на Python.
4
Анализируй данные с помощью одной строки на Python

Любой, кто применял Python для работы с данными, знаком с библиотекой Pandas – мощным пакетом обработки больших данных с их представлением в табличном виде. Установить Pandas проще всего через терминал:

        pip install pandas
    

Посмотрим, какую статистику можно определить по умолчанию:

Анализируй данные с помощью одной строки на Python

Метод describe есть у любого датафрейма Pandas, создаваемого, например, при вызове read_csv. Однако можно видеть, что метод describe не принимает в расчет категориальные признаки. В нашем примере это столбец method. Мы можем добиться гораздо большего.

Профилирование Pandas

Анализируй данные с помощью одной строки на Python

Достаточно всего трех строк на Python, чтобы получить статистику вроде той, что приведена на рисунке. А если не учитывать простейший импорт библиотек, то хватит всего одной строки. В результате вы получаете:

  • Сводка по основным характеристикам: типы, уникальные значения, пропущенные значения.
  • Статистика квантилей: минимальное и максимальное значения, Q1, медиана, Q3, межквартильный диапазон.
  • Описательные статистические данные: среднее значение, мода, стандартное отклонение, среднее абсолютное отклонение, коэффициент вариации, коэффициенты асимметрии и эксцесса.
  • Наиболее частые значения.
  • Гистограмма.
  • Корреляции для высоко коррелированных переменных, матрицы корреляции Спирмена, Пирсона и Кендалла.
  • Отсутствующие значения: матрица, счетчик, тепловая карта и дендрограмма отсутствующих значений.

Прочие функции перечислены на странице pandas_profiling. Именно так называется библиотека, которая так упрощает процесс анализа исходных данных. Установить ее можно так же, как и Pandas:

        pip install pandas_profiling
    

Чтобы воспользоваться библиотеками, их нужно импортировать в Jupyter:

        import pandas as pd
import pandas_profiling
    

А далее та самая единственная строка, чтобы проанализировать данные:

        pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/planets.csv').profile_report()
    

В этой строке создается объект типа DataFrame и тут же профилируется с помощью метода profile_report.

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

Анализируй данные с помощью одной строки на Python

Итог

Резюмируем. Чтобы быстро проанализировать статистику датасета, достаточно выполнить два шага:

1. Установить две библиотеки:

        pip install pandas
pip install pandas_profiling
    

2. Импортировать установленные библиотеки и запустить однострочник на Python:

        import pandas as pd
import pandas_profiling
pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/planets.csv').profile_report()
    

Надеемся, этот простой трюк будет вам полезен.

А какие Python трюки знаете вы? Делитесь в комментариях.

Источники

МЕРОПРИЯТИЯ

Комментарии

 
19 апреля 2020

Добрый день. Возникает ошибка: AttributeError: 'DataFrame' object has no attribute 'profile_report'

1.Устанавливаю: !pip install pandas_profiling

Requirement already satisfied: pandas_profiling in /usr/local/lib/python3.6/dist-packages (1.4.1) Requirement already satisfied: pandas>=0.19 in /usr/local/lib/python3.6/dist-packages (from pandas_profiling) (1.0.3) Requirement already satisfied: six>=1.9 in /usr/local/lib/python3.6/dist-packages (from pandas_profiling) (1.12.0) Requirement already satisfied: matplotlib>=1.4 in /usr/local/lib/python3.6/dist-packages (from pandas_profiling) (3.2.1) Requirement already satisfied: jinja2>=2.8 in /usr/local/lib/python3.6/dist-packages (from pandas_profiling) (2.11.2) Requirement already satisfied: python-dateutil>=2.6.1 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.19->pandas_profiling) (2.8.1) Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.19->pandas_profiling) (1.18.2) Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.19->pandas_profiling) (2018.9) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.4->pandas_profiling) (2.4.7) Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.4->pandas_profiling) (1.2.0) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.4->pandas_profiling) (0.10.0) Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.6/dist-packages (from jinja2>=2.8->pandas_profiling) (1.1.1)

  1. Подключаю: import pandas as pd import pandas_profiling

  2. Выполняю: pd.read_csv('hour_online.csv').profile_report()

AttributeError Traceback (most recent call last)

in () ----> 1 pd.read_csv('hour_online.csv').profile_report() /usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __getattr__(self, name) 5272 if self._info_axis._can_hold_identifiers_and_holds_name(name): 5273 return self[name] -> 5274 return object.__getattribute__(self, name) 5275 5276 def __setattr__(self, name: str, value) -> None: AttributeError: 'DataFrame' object has no attribute 'profile_report'

А при самом импорте не происходит никаких ошибок? Импорты делаются отдельно строка за строкой? Запускаете в Jupyter, как в статье? Я только что проверил, никаких проблем.

17 апреля 2020

Супер, открытие этого месяца для меня))

 
23 января 2020

Браво за модуль!

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

LIVE >

Подпишись

на push-уведомления