В panda python сводная таблица содержит функции сумм, подсчетов или агрегатов, полученные из таблицы данных. Функции агрегирования можно использовать для различных функций или значений. Сводная таблица позволяет нам суммировать данные таблицы, сгруппированные по различным значениям, включая значения категорий столбцов.
Перед использованием сводной таблицы panda убедитесь, что вы понимаете свои данные и вопросы, которые вы пытаетесь решить с помощью сводной таблицы. Используя этот метод, вы можете добиться впечатляющих результатов. В этой статье мы подробно рассмотрим, как создать сводную таблицу в pandas python.
Чтение данных из файла Excel
Мы скачали базу данных по продажам продуктов питания в формате Excel. Перед началом реализации вам необходимо установить некоторые необходимые пакеты для чтения и записи файлов базы данных Excel. Введите следующую команду в разделе терминала редактора pycharm:
pip install xlwt openpyxl xlsxwriter xlrd
Теперь прочтите данные из таблицы Excel. Импортируйте необходимые библиотеки panda и измените путь к вашей базе данных. Затем, запустив следующий код, можно получить данные из файла.
import pandas as pd import numpy as np dtfrm = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') print(dtfrm)
Здесь данные считываются из базы данных Excel по продажам продуктов питания и передаются в переменную dataframe.
Создайте сводную таблицу с помощью Pandas Python
Ниже мы создали простую сводную таблицу, используя базу данных о продажах продуктов питания. Для создания сводной таблицы требуются два параметра. Первый – это данные, которые мы передали в фрейм данных, а второй – индекс.
Сводные данные по индексу
Индекс – это функция сводной таблицы, которая позволяет группировать данные в соответствии с требованиями. Здесь мы взяли «Product» в качестве индекса для создания базовой сводной таблицы.
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe,index=["Product"]) print(pivot_tble)
Явно определите столбцы
Для более подробного анализа ваших данных явно укажите имена столбцов с индексом. Например, мы хотим отображать в результате только UnitPrice каждого продукта. Для этого добавьте параметр значений в свою сводную таблицу. Следующий код дает тот же результат:
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe, index='Product', values='UnitPrice') print(pivot_tble)
Сводные данные с мультииндексом
Данные могут быть сгруппированы на основе более чем одного объекта в качестве индекса. Используя многоиндексный подход, вы можете получить более конкретные результаты для анализа данных. Например, товары относятся к разным категориям. Таким образом, вы можете отобразить индекс «Product» и «Category» с доступными значениями «Quantity» и «UnitPrice» для каждого продукта следующим образом:
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe,index=["Category","Product"],values=["UnitPrice", "Quantity"]) print(pivot_tble)
Применение функции агрегирования в сводной таблице
В сводной таблице aggfunc можно применять для разных значений функций. Результирующая таблица – это сводка данных по функциям. Агрегатная функция применяется к данным вашей группы в pivot_table. По умолчанию агрегатная функция – np.mean(). Но в зависимости от требований пользователя для разных функций данных могут применяться разные агрегатные функции.
Пример:
В этом примере мы применили агрегатные функции. Функция np.sum() используется для функции «Quantity», а функция np.mean() – для функции «UnitPrice».
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe,index=["Category","Product"], aggfunc={'Quantity': np.sum,'UnitPrice': np.mean}) print(pivot_tble)
Используя параметр значения, вы также можете применить агрегатную функцию для определенной функции. Если вы не укажете значение функции, она объединит числовые характеристики вашей базы данных. Следуя данному исходному коду, вы можете применить агрегатную функцию для конкретной функции:
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe, index=['Product'], values=['UnitPrice'], aggfunc=np.mean) print(pivot_tble)
Различия между значениями и столбцами в сводной таблице
Значения и столбцы являются основным запутывающим моментом в pivot_table. Важно отметить, что столбцы являются необязательными полями, отображая значения результирующей таблицы горизонтально вверху. Функция агрегирования aggfunc применяется к перечисляемому вами полю значений.
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe,index=['Category','Product', 'City'],values=['UnitPrice', 'Quantity'], columns=['Region'],aggfunc=[np.sum]) print(pivot_tble)
Обработка отсутствующих данных в сводной таблице
Вы также можете обработать отсутствующие значения в сводной таблице с помощью параметра fill_value. Это позволяет вам заменить значения NaN некоторым новым значением, которое вы предоставляете для заполнения.
Например, мы удалили все нулевые значения из приведенной выше результирующей таблицы, запустив следующий код и заменив значения NaN на 0 во всей результирующей таблице.
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx') pivot_tble=pd.pivot_table(dataframe,index=['Category','Product', 'City'],values=['UnitPrice', 'Quantity'], columns=['Region'],aggfunc=[np.sum], fill_value=0) print(pivot_tble)
Фильтрация в сводной таблице
Как только результат будет сгенерирован, вы можете применить фильтр, используя стандартную функцию фрейма данных. Возьмем пример. Отфильтруйте те продукты, у которых UnitPrice меньше 60. Он отображает те продукты, цена которых меньше 60.
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx', index_col=0) pivot_tble=pd.pivot_table(dataframe, index='Product', values='UnitPrice', aggfunc='sum') low_price=pivot_tble[pivot_tble['UnitPrice'] < 60] print(low_price)
Используя другой метод запроса, вы можете фильтровать результаты. Например, например, мы отфильтровали категорию файлов cookie на основе следующих функций:
import pandas as pd import numpy as np dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx', index_col=0) pivot_tble=pd.pivot_table(dataframe,index=["Category","City","Region"],values=["UnitPrice", "Quantity"],aggfunc=np.sum) pt=pivot_tble.query('Category == ["Cookies"]') print(pt)
Визуализируйте данные сводной таблицы
Чтобы визуализировать данные сводной таблицы, выполните следующий метод:
import pandas as pd import numpy as np import matplotlib.pyplot as plt dataframe = pd.read_excel('C:/Users/DELL/Desktop/foodsalesdata.xlsx', index_col=0) pivot_tble=pd.pivot_table(dataframe,index=["Category","Product"],values=["UnitPrice"]) pivot_tble.plot(kind='bar'); plt.show()
В приведенной выше визуализации мы показали цену за единицу различных продуктов вместе с категориями.
Вывод
Мы изучили, как вы можете создать сводную таблицу из фрейма данных с помощью Pandas python. Сводная таблица позволяет глубже анализировать наборы данных. Мы видели, как сгенерировать простую сводную таблицу с помощью мультииндекса и применить фильтры к сводным таблицам. Кроме того, мы также показали, как построить данные сводной таблицы и заполнить недостающие данные.