Автор оригинала: Pankaj Kumar.
Что такое пивотный стол?
Пивочный стол – это таблица статистики, которая суммирует данные более обширной таблицы. Сводка данных достигается через различные совокупные функции – сумма, среднее, мин, макс и т. Д.
Таблица Pivot – это техника обработки данных для получения полезной информации из таблицы.
Функция Pandas pivot_table ()
Функция Panda Pivot_Table () используется для создания таблицы Pivot из объекта DataFrame. Мы можем генерировать полезную информацию из строк и столбцов DataFrame. Синтаксис функции pivot_table ():
def pivot_table( data, values=None, index=None, columns=None, aggfunc="mean", fill_value=None, margins=False, dropna=True, margins_name="All", observed=False, )
- данные : экземпляр DataFrame, из которого создается таблица Pivot.
- Значения : столбец, чтобы совокупность.
- индекс : столбец к группе по индексу таблицы Pivot.
- Колонны : столбец к группе по столбцу таблицы Pivot.
- aggfunc : Совокупная функция для работы по данным, по умолчанию NUMPY.
- fill_value : значение, чтобы заменить нулевое или отсутствующее значение в таблице Pivot.
- Рейтинги : Добавьте все строки/столбцы. Это полезно для генерации Grand Total от записей.
- Dropna : Не включайте колонны, чьи записи все нан.
- margins_name : Название строки/столбца, которая будет содержать итоги, когда маржи верно.
- Наблюдается : Это относится только только в том случае, если какая-либо из управляющих категоричков. Если true: только показать наблюдаемые значения для категориальных управляющих. Если false: показать все значения для категориальных управляющих.
Примеры таблицы Pandas Pivot
Лучше использовать реальные данные для понимания фактической выгоды от поворотных таблиц. Я скачал образец файла CSV из Эта ссылка Отказ Вот прямая ссылка для CSV-файл Отказ
Файл CSV представляет собой список 1 460 отчетов о финансирования компании, сообщаемых TechCrunch. На следующем изображении показаны данные образца из файла.
Мы заинтересованы в колоннах – «Company», «Город», «штат», «Raisedamt» и «раунд». Давайте создадим некоторые поворотные таблицы для создания полезных статистических данных из этих данных.
1. Простое пример таблицы Pivot
Давайте попробуем создать сводную таблицу для среднего финансирования государством.
import pandas as pd import numpy as np df = pd.read_csv('TechCrunchcontinentalUSA.csv', usecols=['company', 'city', 'state', 'raisedAmt', 'round']) print('DataFrame Records:\n', df.head(6)) # average funding by State df1 = pd.pivot_table(df, values='raisedAmt', columns='state') print('\nAverage Funding by State:\n', df1)
Выход:
DataFrame Records: company city state raisedAmt round 0 LifeLock Tempe AZ 6850000 b 1 LifeLock Tempe AZ 6000000 a 2 LifeLock Tempe AZ 25000000 c 3 MyCityFaces Scottsdale AZ 50000 seed 4 Flypaper Phoenix AZ 3000000 a 5 Infusionsoft Gilbert AZ 9000000 a Average Funding by State: state AZ CA ... VA WA raisedAmt 5613750.0 1.072324e+07 ... 1.158261e+07 8.140103e+06 [1 rows x 33 columns]
Мы также можем вызвать функцию pivot_table () непосредственно на объекте dataframe. Вышеуказанная таблица поворота может быть сгенерирована с помощью фрагмента с ним ниже.
df1 = df.pivot_table(values='raisedAmt', columns='state')
2. Пивовая таблица с совокупной функцией
Функция совокупности по умолчанию – numpy.mean
Отказ Мы можем указать функцию совокупности как numpy.sum
генерировать общее финансирование государством.
df1 = pd.pivot_table(df, values='raisedAmt', columns='state', aggfunc=np.sum) print('\nTotal Funding by State:\n', df1)
Выход:
Total Funding by State: state AZ CA CO ... UT VA WA raisedAmt 50523750 9361385000 126470000 ... 153080000 266400000 789590000 [1 rows x 33 columns]
3. Общее финансирование компанией
df1 = pd.pivot_table(df, values='raisedAmt', columns='company', aggfunc=np.sum) print('\nTotal Funding by Company:\n', df1)
Выход:
Total Funding by Company: company 23andMe 3Jam 4HomeMedia ... vbs tv x+1 xkoto raisedAmt 9000000 4000000 2850000 ... 10000000 16000000 7500000 [1 rows x 909 columns]
4. Установка столбца индекса в таблице Pivot
Попробуем создать сводную таблицу для среднего финансирования раунда, сгруппированным государством. Хитрость состоит в том, чтобы генерировать таблицу поворота с «раундом» в качестве столбца индекса.
df1 = pd.pivot_table(df, values='raisedAmt', columns='state', index='round') print('\nAverage Funding by round in State:\n', df1)
Выход:
Average Funding by round in State: state AZ CA ... VA WA round ... a 6.000000e+06 7.158314e+06 ... 9910000.0 6.570476e+06 angel 2.337500e+05 1.006784e+06 ... NaN 8.935714e+05 b 6.850000e+06 1.238483e+07 ... 9850000.0 1.187826e+07 c 2.500000e+07 2.369708e+07 ... 19500000.0 1.592222e+07 d NaN 3.012188e+07 ... 20000000.0 8.500000e+06 debt_round NaN 1.660833e+07 ... NaN NaN e NaN 3.132500e+07 ... NaN 2.200000e+07 seed 1.466667e+05 8.778214e+05 ... 350000.0 7.800000e+05 unattributed NaN 1.933000e+07 ... NaN 2.050000e+07 [9 rows x 33 columns]
5. Замена нулевых значений с значением по умолчанию
df1 = pd.pivot_table(df, values='raisedAmt', columns='state', index='round', aggfunc=np.sum, fill_value=0) print('\nTotal Funding by round in State:\n', df1)
Выход:
Total Funding by round in State: state AZ CA CO ... UT VA WA round ... a 18000000 2526885000 25650000 ... 31800000 99100000 275960000 angel 233750 74502000 3950000 ... 0 0 12510000 b 6850000 2898050000 66900000 ... 67200000 68950000 273200000 c 25000000 2109040000 28850000 ... 54000000 78000000 143300000 d 0 963900000 0 ... 0 20000000 17000000 debt_round 0 199300000 500000 ... 0 0 0 e 0 250600000 0 ... 0 0 44000000 seed 440000 49158000 620000 ... 80000 350000 3120000 unattributed 0 289950000 0 ... 0 0 20500000 [9 rows x 33 columns]
5. Несколько индексных столбцов столбцов Pivot
Давайте посмотрим на более сложный пример. Мы создадим сводную таблицу общего финансирования на одну компанию за раунд, государственную мудрому.
df1 = pd.pivot_table(df, values='raisedAmt', columns='state', index=['company', 'round'], aggfunc=np.sum, fill_value=0) print('\nTotal Funding by company and round in State:\n', df1)
Выход:
Total Funding by round in State: state AZ CA CO CT DC FL GA ... PA RI TN TX UT VA WA company round ... 23andMe a 0 9000000 0 0 0 0 0 ... 0 0 0 0 0 0 0 3Jam a 0 4000000 0 0 0 0 0 ... 0 0 0 0 0 0 0 4HomeMedia a 0 2850000 0 0 0 0 0 ... 0 0 0 0 0 0 0 5min a 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 angel 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 ... .. ... .. .. .. .. .. ... .. .. .. .. .. .. .. uber b 0 7600000 0 0 0 0 0 ... 0 0 0 0 0 0 0 utoopia seed 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 vbs tv seed 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 x+1 a 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 xkoto b 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 [1405 rows x 33 columns]
Рекомендации
- Учебник модуля Python Pandas
- Pandas Pivot_table () API DOC
- Pivot Table Page Wikipedia Page