Автор оригинала: Pankaj Kumar.
В этой статье мы поговорим о сводных таблицах в Python. Мы реализуем то же самое с помощью функции pivot_table в модуле Pandas .
Что такое Сводная таблица?
Сводные таблицы являются ключевой особенностью Microsoft Excel и одной из причин, по которой Excel стал таким популярным в корпоративном мире.
Сводные таблицы обеспечивают большую гибкость для выполнения анализа данных.
Это позволяет нам преобразовывать столбцы в строки, а строки в столбцы. Поскольку он позволяет группировать по любому параметру, его можно легко спутать с функцией pandas Groupby .
Подумайте о сводных таблицах как о многомерной версии функции GroupBy
.
Шаги по реализации сводных таблиц в Python
Давайте сразу перейдем к реализации сводных таблиц в Python.
1. Загрузите набор данных по вашему выбору
Мы будем анализировать покемонов с помощью набора данных статистики (загруженного из Kaggle). Вы можете получить набор данных здесь .
И на случай, если вам интересно Что такое покемоны? для ясности вы можете проверить эту ссылку .
Независимо от того, любите ли вы покемонов или нет, вы все равно можете получить 100% от этой статьи.
Нужно поймать их всех.… 🙂
import pandas as pd #importing the dataset data = pd.read_csv('Pokemon.csv') data.head()
2. Синтаксис метода pivot_table()
DataFrame.pivot_table(data, values=None, index=None,columns=None, aggfunc='mean')
После вызова метода pivot_table
в фрейме данных давайте разберем основные входные аргументы , данные методу.
- data – это числовой столбец, к которому мы применяем функцию агрегации. например, продажи, скорость, цена и т. Д.
- index – Столбцы, которые мы хотим преобразовать в строки. мы можем передать несколько значений в виде списка.
- columns – Переменные столбца, которые мы теперь хотим сохранить как столбец.
- aggfunc – тип операции, выполняемой с данными, т. е. сумма, среднее значение, количество и т. Д.
Это будет намного яснее на примере.
3. Реализация сводных таблиц в Python
Допустим, нам нужно найти среднюю скорость покемонов, принадлежащих к типу 1.
Это можно легко сделать с помощью pandas Groupby
, но тот же результат можно легко получить с помощью pivot_table
с гораздо более чистым кодом.
С каждым примером мы будем медленно исследовать pivot_table во всей его красе.
df.groupby(['Type 1'])[['Speed']].mean()
Аналогичный результат с использованием pivot_table
df.pivot_table('Speed' , index = ['Type 1'], aggfunc = 'mean')
4. Найдите среднюю скорость с помощью сводных таблиц
Но теперь, если бы нас попросили найти среднюю скорость каждого покемона типа 1, а также разделить их на легендарных и Не Легендарных.
df.pivot_table('Speed' , index = ['Type 1'] , columns= ['Legendary'] , aggfunc = 'mean')
Тада! С помощью одной строки кода мы смогли добиться желаемых результатов.
Я не мог не заметить, что в среднем Легендарные Покемоны были быстрее, чем нелегендарные. Магия сводных таблиц.
Здесь важно понять, что нам нужен столбец типа 1 в качестве индекса, поэтому мы передали его в аргумент индекса в методе pivot_table.
Но теперь, поскольку каждый покемон типа 1 принадлежал либо к Легендарной категории, либо к Не Легендарной, мы просто преобразовали наш фрейм данных таким образом, чтобы он теперь показывал среднюю скорость каждого типа.
Теперь у нас есть легендарные или не легендарные функции в наших данных.
Поскольку нам нужна была “Легендарная” функция в наших данных в качестве столбца новых данных, нам просто нужно было передать ее в параметре columns
. Давайте немного изменим наш набор данных и проведем новый анализ.
Теперь мы создаем ячейки переменной скорости в качестве новой добавленной функции.
df['speed_range'] = pd.cut(df['Speed'] , [0,40,60,80,120] , include_lowest=True)
Теперь давайте выведем фрейм данных, который показывает среднюю скорость на основе легендарной функции и функции диапазона скоростей.
df.pivot_table('Speed' , index = ['Type 1'] , columns= ['speed_range','Legendary'] , aggfunc = 'mean')
Я призываю вас попробовать pandas pivot_table
на наборе данных Titanic, поскольку это дополнит вашу практику в этой теме.
Сводные таблицы в Python-непростая тема для освоения, но, учитывая преимущества, которые она может предложить, необходимо обязательно включить эти знания в свой инструментарий анализа. Помните, что практика-это ключ здесь!
Вывод
в этой статье мы попытались получить некоторое представление о Pandas pivot_table
, реализовав его на наборе данных. Мы поняли, что это многомерная версия операции groupby (концептуально говоря). Счастливого Обучения!