Часть-1
Начнем с того, с чего мы ушли в 1-й части.
В этой части мы обсудим нарезку/нарезку, слияние/объединение, агрегацию и применение функций.
Следуем тому же правилу, что и в прошлый раз, для лучшего понимания читайте комментарии в блоке кода.
Начнем с загрузки данных снова:
Подмножество строк на основе условий
Часто мы хотим выбрать строки, которые удовлетворяют некоторым заданным условиям. Например, выбрать все ордера, где Продажи › 3000, или все ордера, где 2000 ‹ Продажи ‹ 3000 и Прибыль ‹ 100.
Возможно, лучший способ выполнить эти операции — использовать df.loc[]
, поскольку df.iloc[]
потребовало бы от нас запоминания целочисленных индексов столбцов, что утомительно. Мы также обсудим некоторые другие способы выполнения той же работы.
Давайте посмотрим на некоторые примеры.
Выше мы использовали df.loc[]
, но мы можем сделать это более элегантным способом, указанным ниже.
Мы можем комбинировать несколько операций, используя оператор & (и) и оператор |(или). Наряду с этим мы можем применять операторы == (равенство) и != (неравно).
Слияние и объединение фреймов данных
В этом разделе мы объединим и объединим несколько фреймов данных.
Слияние — одна из самых распространенных операций, которые мы будем выполнять, поскольку данные часто поступают в разных файлах.
В нашем случае у нас есть данные о продажах розничного магазина, разбросанные по нескольким файлам. Теперь мы будем работать со всеми этими файлами данных и научимся:
- Объедините несколько фреймов данных, используя общие столбцы/ключи, используя
pd.merge()
- Объедините кадры данных, используя
pd.concat()
Мы начнем с загрузки нескольких файлов, чтобы их можно было объединить для создания основного фрейма данных.
Слияние фреймов данных
Скажем, мы хотим выбрать все заказы и наблюдать за продажами любого сегмента клиентов. Поскольку детали клиентского сегмента присутствуют в фрейме данных customer_df
, нам сначала нужно объединить его с market_df
.
Мы видим, что после слияния мы получаем в общей сложности 22 столбца в master_df. Точно так же мы можем выполнять левое, правое и внешнее слияние (объединение), используя аргумент как = «левое» / «правое» / «внешнее».
Объединение фреймов данных
Конкатенация намного проще, чем слияние. Он используется, когда у вас есть фреймы данных с одинаковыми столбцами и вы хотите добавить их (сложить один поверх другого) или иметь одинаковые строки и хотите добавить их бок о бок.
Объединение кадров данных, имеющих один и тот же столбец
Скажем, у вас есть два кадра данных с одинаковыми столбцами, например:
Объединение кадров данных с одинаковыми строками
У нас также могут быть фреймы данных с одинаковыми строками, но разными столбцами (и без общих столбцов). В этом случае мы можем захотеть объединить их бок о бок. Например:
Группировка и суммирование фреймов данных
Группировка и агрегирование являются одними из наиболее часто используемых операций при анализе данных, особенно при выполнении исследовательского анализа данных (EDA), когда обычно проводится сравнение сводной статистики по группам данных.
Например. в данных о розничных продажах, с которыми мы работаем, мы можем захотеть сравнить средние продажи в разных регионах или сравнить общую прибыль двух клиентских сегментов.
Групповой анализ можно рассматривать как состоящий из трех частей:
- Разделение данных на группы (например, группы сегментов клиентов, категорий продуктов и т. д.)
- Применение функции к каждой группе (например, средний или общий объем продаж каждого потребительского сегмента)
- Объединение результатов в структуру данных, показывающую сводную статистику
Давайте поработаем с некоторыми примерами.
Шаг 1. Группировка с помощью df.groupby()
Как правило, мы группируем данные с помощью категориальной переменной, такой как сегменты клиентов, категории продуктов и т. д. Это создает столько подмножеств данных, сколько уровней в категориальной переменной.
Например, в этом случае мы сгруппируем данные по Customer_Segment.
Шаг 2. Применение функции
После группировки вы применяете функцию к числовой переменной, такой как среднее (продажи), сумма (прибыль) и т. д.
Шаг 3. Объединение результатов в структуру данных
При желании вы можете показать результаты в виде кадра данных.
Мы можем применить другие функции, такие как mean(), min(), max(), count() и т. д. вместо sum().
Лямбда-функции
Допустим, мы хотим создать новый столбец, указывающий, был ли данный ордер прибыльным или нет (1/0).
Нам нужно применить функцию, которая возвращает 1, если Profit > 0, иначе 0. Это можно легко сделать с помощью метода apply() для столбца фрейма данных.
Итак, это подводит нас к логическому завершению изучения основных и широко используемых функций панд. В следующей и последней части этой серии я расскажу о некоторых проблемах, с которыми я столкнулся при использовании панд для выполнения алгоритмов машинного обучения. А пока следите за обновлениями.