В panda python сводная таблица содержит функции сумм, подсчетов или агрегатов, полученные из таблицы данных. Функции агрегирования можно использовать для различных функций или значений. Сводная таблица позволяет нам суммировать данные таблицы, сгруппированные по различным значениям, включая значения категорий столбцов.
Перед использованием сводной таблицы panda убедитесь, что вы понимаете свои данные и вопросы, которые вы пытаетесь решить с помощью сводной таблицы. Используя этот метод, вы можете добиться впечатляющих результатов. В этой статье мы подробно рассмотрим, как создать сводную таблицу в pandas python.
Мы скачали базу данных по продажам продуктов питания в формате 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.
Ниже мы создали простую сводную таблицу, используя базу данных о продажах продуктов питания. Для создания сводной таблицы требуются два параметра. Первый – это данные, которые мы передали в фрейм данных, а второй – индекс.
Индекс – это функция сводной таблицы, которая позволяет группировать данные в соответствии с требованиями. Здесь мы взяли «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. Сводная таблица позволяет глубже анализировать наборы данных. Мы видели, как сгенерировать простую сводную таблицу с помощью мультииндекса и применить фильтры к сводным таблицам. Кроме того, мы также показали, как построить данные сводной таблицы и заполнить недостающие данные.