Часть-1

Начнем с того, с чего мы ушли в 1-й части.

В этой части мы обсудим нарезку/нарезку, слияние/объединение, агрегацию и применение функций.

Следуем тому же правилу, что и в прошлый раз, для лучшего понимания читайте комментарии в блоке кода.

Блокнот Jupyter

Начнем с загрузки данных снова:

Подмножество строк на основе условий

Часто мы хотим выбрать строки, которые удовлетворяют некоторым заданным условиям. Например, выбрать все ордера, где Продажи › 3000, или все ордера, где 2000 ‹ Продажи ‹ 3000 и Прибыль ‹ 100.

Возможно, лучший способ выполнить эти операции — использовать df.loc[], поскольку df.iloc[] потребовало бы от нас запоминания целочисленных индексов столбцов, что утомительно. Мы также обсудим некоторые другие способы выполнения той же работы.

Давайте посмотрим на некоторые примеры.

Выше мы использовали df.loc[], но мы можем сделать это более элегантным способом, указанным ниже.

Мы можем комбинировать несколько операций, используя оператор & (и) и оператор |(или). Наряду с этим мы можем применять операторы == (равенство) и != (неравно).

Слияние и объединение фреймов данных

В этом разделе мы объединим и объединим несколько фреймов данных.

Слияние — одна из самых распространенных операций, которые мы будем выполнять, поскольку данные часто поступают в разных файлах.

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

  • Объедините несколько фреймов данных, используя общие столбцы/ключи, используя pd.merge()
  • Объедините кадры данных, используя pd.concat()

Мы начнем с загрузки нескольких файлов, чтобы их можно было объединить для создания основного фрейма данных.

Слияние фреймов данных

Скажем, мы хотим выбрать все заказы и наблюдать за продажами любого сегмента клиентов. Поскольку детали клиентского сегмента присутствуют в фрейме данных customer_df, нам сначала нужно объединить его с market_df.

Мы видим, что после слияния мы получаем в общей сложности 22 столбца в master_df. Точно так же мы можем выполнять левое, правое и внешнее слияние (объединение), используя аргумент как = «левое» / «правое» / «внешнее».

Объединение фреймов данных

Конкатенация намного проще, чем слияние. Он используется, когда у вас есть фреймы данных с одинаковыми столбцами и вы хотите добавить их (сложить один поверх другого) или иметь одинаковые строки и хотите добавить их бок о бок.

Объединение кадров данных, имеющих один и тот же столбец

Скажем, у вас есть два кадра данных с одинаковыми столбцами, например:

Объединение кадров данных с одинаковыми строками

У нас также могут быть фреймы данных с одинаковыми строками, но разными столбцами (и без общих столбцов). В этом случае мы можем захотеть объединить их бок о бок. Например:

Группировка и суммирование фреймов данных

Группировка и агрегирование являются одними из наиболее часто используемых операций при анализе данных, особенно при выполнении исследовательского анализа данных (EDA), когда обычно проводится сравнение сводной статистики по группам данных.

Например. в данных о розничных продажах, с которыми мы работаем, мы можем захотеть сравнить средние продажи в разных регионах или сравнить общую прибыль двух клиентских сегментов.

Групповой анализ можно рассматривать как состоящий из трех частей:

  1. Разделение данных на группы (например, группы сегментов клиентов, категорий продуктов и т. д.)
  2. Применение функции к каждой группе (например, средний или общий объем продаж каждого потребительского сегмента)
  3. Объединение результатов в структуру данных, показывающую сводную статистику

Давайте поработаем с некоторыми примерами.

Шаг 1. Группировка с помощью df.groupby()

Как правило, мы группируем данные с помощью категориальной переменной, такой как сегменты клиентов, категории продуктов и т. д. Это создает столько подмножеств данных, сколько уровней в категориальной переменной.

Например, в этом случае мы сгруппируем данные по Customer_Segment.

Шаг 2. Применение функции

После группировки вы применяете функцию к числовой переменной, такой как среднее (продажи), сумма (прибыль) и т. д.

Шаг 3. Объединение результатов в структуру данных

При желании вы можете показать результаты в виде кадра данных.

Мы можем применить другие функции, такие как mean(), min(), max(), count() и т. д. вместо sum().

Лямбда-функции

Допустим, мы хотим создать новый столбец, указывающий, был ли данный ордер прибыльным или нет (1/0).

Нам нужно применить функцию, которая возвращает 1, если Profit > 0, иначе 0. Это можно легко сделать с помощью метода apply() для столбца фрейма данных.

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