Рубрики
Без рубрики

Pandas pivot_table () – анализ данных DataFrame

Функция Panda Pivot_Table () используется для создания таблицы пивота в стиле электронной таблицы в качестве DataFrame. Мы можем запустить совокупную функцию для анализа данных на DataFrame

Автор оригинала: 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]

Рекомендации