Как сделать таблицу сопряженности из другой таблицы сопряженности, используя значения счетчиков первой таблицы сопряженности? - PullRequest
0 голосов
/ 08 января 2019

Используя фреймы данных pandas, я строю все таблицы сопряженности из каждого элемента набора данных зоопарка. Таблица непредвиденных расходов выглядит следующим образом.

Domestic  Catsize  Type  Count
0            0       1     7
0            0       2     11
0            0       3     4
0            0       4     8
0            0       5     4
0            0       6     7
0            0       7     9
0            1       1     26
1            0       2     3
1            1       1     6

Теперь я хочу создать другие таблицы сопряженности из этой таблицы, в которых значения таблиц сопряженности являются значениями из столбца Count. Например, таблица непредвиденных обстоятельств для Type = 1 будет выглядеть следующим образом (Type (T), Domestic (D) и Catsize (C))

         T       T`
      -----------------
DC    |  6    |   0   |
      -----------------
(DC)` |  33   |   46  |
      -----------------

Выходная таблица, содержащая значения, рассчитывается следующим образом: Например: значение 33 рассчитывается так же, как когда значение ANDing Domestic и Catsize дает 0 (например, комбинации 0 И 1, 1 И 0 и 0 И 0) и Тип = 1, есть две записи с count = 7 и count = 26. Сумма этих значений приводит к 33. Аналогично, комбинации 0 И 1, 1 И 0 и 0 И 0 с Типом, не равным 1 (2,3,4,5,6,7), насчитывают 7 записей и их счет добавляется (11 + 4 + 8 + 4 + 7 + 9 + 3), обеспечивая значение 46 в правой нижней ячейке.

Те же вычисления должны быть выполнены для Type = 2 и 3 и т. Д.

Любая помощь в этом отношении будет высоко оценена.

1 Ответ

0 голосов
/ 08 января 2019

Использование -

df.pivot_table(index=['Type', 'Domestic'], columns=['Catsize'], values='Count')

выход

Catsize           0     1
Type Domestic            
1    0          7.0  26.0
     1          NaN   6.0
2    0         11.0   NaN
     1          3.0   NaN
3    0          4.0   NaN
4    0          8.0   NaN
5    0          4.0   NaN
6    0          7.0   NaN
7    0          9.0   NaN
...