Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Всем привет, меня зовут Питер~
Я написал много статей о Pandas, в основном объясняя использование часто используемых операций и функций. Сегодня я сделал самостоятельный заказ фруктов и данные о продажах (симулированные данные, только для обучения), в основном, чтобы углубить наше понимание того, как гибко и быстро использовать Pandas для удовлетворения наших потребностей.
Статьи о пандах
рекомендовать
Объяснение данных
1. Первые данные симуляции имеют 5 полей:Номер заказа, заказчик, товар, цена, количество
- Номер заказа: номер каждого заказа, один или несколько элементов существуют в номере заказа.
- Разместитель: один человек может разместить один или несколько заказов, например, Чжан Сан разместил только один заказ, а Ли Си разместил несколько заказов.
- Предмет: один и тот же предмет может появиться в нескольких заказах.
- Цена: цена каждого товара в каждом заказе. В разных заказах цена одного и того же товара может быть разной. Например, у Apple 10 в заказе SOD, но 9,8 в заказе DFH.
- Количество: количество продаж каждого товара в каждом заказе.
2. Во вторых данных моделирования есть два поля:Товар и происхождение
При этом мы видим:Эти два данных хранятся на разных листах, сохраненные в виде файлов xlslx без каких-либо отсутствующих данных.
Требование 1: Различные способы чтения данных
В одном и том же Excel есть разные листы, мы по-разному читаем:
Способ 1: указать имя файла и листа одновременно
import pandas as pd # 先导入包
Способ 2: Укажите имя файла и порядковый номер листа, порядковый номер начинается с 0
Требование 2. Объединение двух копий данных
Видно, что данные на двух листах связаны полем «товар».Мы используем функцию слияния в пандах и сохраняем всю информацию на первом (левом) листе.
Функция слияния — очень важная функция, которая может гибко решать проблемы слияния данных в Pandas.
Следующие различные требования обрабатываются для данных, объединенных выше.
Требование 3: объем заказа, объем клиентов, объем товара
Объем заказа: сколько заказов размещено в этих данных в целом.
уникальный: китайский означает уникальный, то есть поле номера заказа содержит несколько уникальных и уникальных сведений. Всего 7 заказов
То же самое: сколько пользователей могут получить заказы, сколько видов продукции продано?
Требование 4: Количество заказов, размещенных каждым пользователем
Чтобы узнать, сколько заказов разместил каждый пользователь: используйте groupby для группировки и подсчета объема заказов каждого заказчика.
- Сначала используйте функцию groupby для группировки
- Затем используйте функцию агрегации nunique для подсчета количества каждого «номера заказа» (статистика дедупликации).
- Наконец сбросить индекс
Я видел, что Ли Си разместила 3 заказа, что является самым
Требование 5: Общая сумма потребления каждого пользователя
1. Сначала добавьте столбец: итог
2. Два разных способа группировки и повторной агрегации
Требование 6. Объем заказа, объем продаж и общий объем продаж различного происхождения.
Спрос 7: самый дорогой товар в каждом заказе.
Найдите товар с самой высокой ценой в каждом заказе, например:Самая высокая цена в заказах SOD - виноград
Способ 1: Первый способ реализуется следующим образом:
- Сортировать сначала по убыванию
- Затем сгруппируйте по номеру заказа и выньте первые первые данные
Метод 2: метод реализации выглядит следующим образом
1. Сначала поймите, что каждый номер заказа отсортирован в порядке убывания цены.
2. Смешанное использование нескольких функций можно запускать отдельно для просмотра результатов каждого шага.
df.groupby("订单号").apply(lambda x: x.sort_values("价格",ascending=False)).reset_index(drop=True).groupby("订单号").first().reset_index()
Способ 3: используйте параметр groupby_keys при группировке
Спрос 8: Топ 2 с самой высокой ценой в каждом заказе
Уберите 2 верхних места с самой высокой ценой в каждом заказе, если есть только одно место, уберите одно место.
Выше приведены самые высокие данные после того, как группировка вынесена, то есть первая первая. В этом требовании мы используем функцию head, которая может извлекать любые n фрагментов данных: Top-N
Требование 9: Цена за единицу каждого товара (сохранить 2 знака после запятой)
Разберем смысл задачи:
- Каждый продукт: элемент, определяющий группировку, — groupby="product"
- Цена за единицу: сначала найдите общий объем продаж каждого продукта, затем найдите количество заказов для каждого продукта и, наконец, разделите
Как сохранить два десятичных знака в цене за единицу вышеуказанного товара? Два способа добиться этого: