Этот тренировочный вопрос Pandas должен быть успешно выигран

анализ данных pandas
Этот тренировочный вопрос Pandas должен быть успешно выигран

Общественный номер: 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"
  • Цена за единицу: сначала найдите общий объем продаж каждого продукта, затем найдите количество заказов для каждого продукта и, наконец, разделите

Как сохранить два десятичных знака в цене за единицу вышеуказанного товара? Два способа добиться этого: