
pandas - это быстрый, мощный, гибкий и простой в использовании инструмент для анализа и обработки данных с открытым исходным кодом, созданный на основе языка программирования Python.
В этой статье я расскажу о некоторых передовых методах панд, которые я использовал в задачах анализа данных и машинного обучения.
Включают:
groupby()+agg(), apply(), transform()и его Практический сценарий и Сравнение производительности- Данные о расчесывании:
merge(),concat(),join(),append()
Исходные данные: train.csv, поддельные данные о продажах автомобилей, которые я создал с помощью кода Python.

Группа по
1. Простое агрегирование
Вычислите сводную статистику (или статистику) для каждой группы.
Примеры: вычисление групповых сумм, средних или стандартных отклонений.
df.groupby('brand').mean() # Compute means price of brands

2. Применение нескольких функций в одной строке
Вы можете передать список или словарь функций для агрегирования с выводом DataFrame. Вы можете использовать функцию NumPy или строковое имя функции.
Пример: сгруппируйте по «бренду» и «модели», а затем вычислите сумму «цены».
df.groupby(['column A']).agg({'column B':['sum']}
or
df.groupby(['column A']).agg({'column B':[np.sum()]}


3. Применение различных функций к столбцам DataFrame.
df.groupby(['column A','column B']).agg({'column C':[np.mean], 'column D':[np.sum]})
В этом примере вычислите среднюю продажную цену и общий объем каждой модели по брендам.

4. apply () + лямбда
Функция apply() может использовать выражение lambda для более гибких вычислений.
В приведенном ниже примере вычислите разницу между ценой и средним значением после группировки по марке и модели.

5. groupby () + transform ()
Метод transform возвращает объект, который имеет такой же индекс (тот же размер), что и объект, который группируется. Просто метод transform добавляет результат операций agg, таких как mean, sum, и std, к исходным данным. Эта функция полезна в реальных проектах.
Пример сценария использования: добавьте среднюю цену в новый столбец к исходным данным.
Если мы используем функции agg, merge... для выполнения вышеуказанного требования, нам потребуется как минимум 4 строки кода.

Используя transform, нам нужна только одна строчка кода.

Практический сценарий
- Рассмотрим
groupby() + agg(aggregating functions)при простых вычисленияхmean, std, max, min...после группировки. Он может использовать строковое имя функции, например.agg('sum'), или функции NumPy, напримерnumpy.sum - Рассмотрим
groupby() + apply() + lambda, когда нам нужно использовать сложные функции.apply()не может использовать строковое имя функции, например'sum'. - Рассмотрим
groupby() + transform(), когда нам нужно использовать простые агрегатные функции и вернуть ту же структуру, что и исходныйDataframe. Он может использовать лямбда-функции, функции NumPy и имя строковой функции.
Сравнение производительности
Хотя эти три функции agg(),apply(), and transform() могут вычислять простые операции агрегирования, их производительность различается.
Мы отдельно рассчитываем время расчета каждого комбинированного метода при одном и том же спросе: min,max,sum,count,mean.
Мы отобрали данные конкурса в Kaggle, всего 2,935,849 записей. (Sales_train.csv)

- agg () + названия функций

2. Agg () + numpy функции

3. apply () + лямбда

4. transform () + имена функций

5. transform () + лямбда

Из результатов теста видно, что комбинация agg()+function names является самой быстрой (всего 1,3 секунды), а transform()+lambda - самой медленной (всего 10 минут 1 секунда). Поэтому рекомендуется использовать agg()+function names при выполнении простых вычислений.
Расчесывание данных
В приведенном выше примере мы использовали pandas.DataFrame.merge() для объединения данных. pandas предоставляют различные средства для простого объединения данных с различными видами логики набора для индексов и функциональных возможностей реляционной алгебры в случае операций типа соединения / слияния.
Есть три способа объединить Dataframe в пандах: pandas.DataFrame.merge(),pandas.DataFrame.join(),pandas.DataFrame.concat(), и pandas.DataFrame.append().

Практический сценарий
- Учитывайте
pandas.DataFrame.concat()при объединенииDataFramesс той же структурой. Например, объедините данные за разные периоды времени в полный обучающий набор.
Нет существенных различий междуpandas.DataFrame.concat()иpandas.DataFrame.append(). - Учитывайте
pandas.DataFrame.merge()при объединении дополнительныхDataFrameобъектов, учитывайтеpandas.DataFrame.join()при объединении несколькихDataFrameобъектов по индексу.pandas.DataFrame.merge()похоже на SQL в реляционных базах данных. На практикеmerge()в основном используется для добавления данных нового столбца или строки из разных наборов данных в обучающий набор. - Слияние по вертикали считайте
pandas.DataFrame.concat(), по горизонтали считайтеpandas.DataFrame.merge().
Пример:

Весь исходный код:

Спасибо за внимание.