Ответ
Оба метода преобразуют таблицу из длинного формата в широкий, но pivot_table — это более мощная и гибкая версия.
pivot— простой метод для перестановки данных. Он требует, чтобы комбинация значений, указанных в параметрахindexиcolumns, была уникальной. Если найдутся дубликаты, метод выбросит ошибкуValueError. Агрегация данных не поддерживается.pivot_table— метод для сводной таблицы (pivot table) с агрегацией. Он специально разработан для обработки дубликатов: если для одной ячейки сводной таблицы находится несколько значений, они агрегируются с помощью функции (по умолчаниюmean).
Пример, показывающий разницу:
import pandas as pd
# Данные с дубликатом: продажи продукта 'A' 10 января учтены дважды
df = pd.DataFrame({
'date': ['2024-01-10', '2024-01-10', '2024-01-11'],
'product': ['A', 'A', 'B'],
'sales': [100, 150, 200]
})
# pivot — УПАДЕТ С ОШИБКОЙ из-за дубликата (date='2024-01-10', product='A')
# df.pivot(index='date', columns='product', values='sales')
# pivot_table — КОРРЕКТНО просуммирует дубликаты
pivot_df = df.pivot_table(
index='date',
columns='product',
values='sales',
aggfunc='sum', # Явно указываем функцию агрегации
fill_value=0 # Заполняем пропуски нулями
)
print(pivot_df)
# product A B
# date
# 2024-01-10 250 0
# 2024-01-11 0 200
Вывод: Используйте pivot только когда уверены в уникальности ключей. В подавляющем большинстве реальных случаев, особенно с "сырыми" данными, нужен pivot_table с явным указанием aggfunc (например, 'sum', 'count', 'mean').