Исследование свойств числовой последовательности данных с помощью Python является важнейшим этапом анализа. В этой статье речь пойдет об основных инструментах и способах их применения.
Будем предполагать, что такие распространенные библиотеки для работы с данными, как Pandas, NumPy, Matplotlib вы установили. Кроме того, смогли загрузить информацию в объект Pandas - DataFrame или Series (подробнее читай здесь).
В демонстрационных целях работа будет проводиться со сводной таблицей о способах завершения своих побед всеми бойцами американской лиги UFC (название - p_all, о получении читай здесь), которая построена на основании сведений с сайта ufcstats.com (о том, как проведен его парсинг, писал ранее):
Уникальные значения
Для получения уникальных значений можно использовать метод unique. Рассмотрим его работу на примере столбца sum нашей таблицы p_all:
То есть количество побед бойцов UFC в рамках лиги варьируется от 1 до 23.
Метод value_counts помимо уникальных значений выводит информацию об их количестве в наборе:
Минимум, максимум
Извлечение данных метрик осуществляется путем вызова методов min и max:
Гистограмма
Отображает распределение значений последовательности по интервалам. Простым способом ее вывода является вызов метода hist, для которого в параметре bins задается либо число интервалов (Pandas выберет равномерные интервалы сам), либо их границы.
Для того, чтобы распределить количество побед бойцов UFC по полуинтервалам от 1 до 2, от 2 до 3 ..., где правые значения не включаются в полуинтервал (кроме последнего), наберем команду:
Правая граница bins устанавливается нами на 24 (max - 23,а arange последнее число не включает), чтобы формируемые диапазоны приняли вид - [1,2) ...[22,23), [23,24] и в каждый попало только одно значение числа побед:
Если захотим, чтобы график отражал процентные соотношения, то в hist следует добавить параметр density=True:
Гистограмма значений
Если ваша цель не только визуализация, но и извлечение распределения значений по диапазонам, то можно воспользоваться методом histogram библиотеки NumPy (псевдоним np):
Он принимает аналогичный hist параметр bins и возвращает количество значений, встретившихся в каждом диапазоне, а также список краев полуинтервалов.
Так как значениями нашего столбца являются целые числа, способы их подсчета путем распределения по диапазонам сложнее, чем применение того же метода Pandas - value_count. Если требуется нормировка, то значения следует поделить на их сумму:
Если теперь требуется получить график гистограммы, то воспользуйтесь функцией plot с параметром kind=bar (значения распределения уже имеются, поэтому фактически будет строится столбчатая диаграмма):
Квантили
Квантилью заданного уровня (задается на отрезке от 0 до 1 и обозначает процент) является такое значение, что соответствующий процент членов последовательности не превышает его. Например, из графика выше видно, что свыше 30% процентов бойцов UFC имеют в своем активе ровно 1 победу, то есть квантилью уровня 0.3 и ниже будет 1. Для получения квантилей может использоваться метод quantile:
Если же нас интересует квантиль уровня 0.4, то получим значение 2:
Квантиль уровня 1 является значение большее или равное всем представленным в наборе: