Используя Python для подсчета, содержит ли строка то и это, затем создайте тепловую карту (не уверены, что это правильный термин) результатов - PullRequest
0 голосов
/ 27 мая 2018

Мои данные выглядят так:

     cat1     cat2    cat3    cat4
a      0        1       1      0 
b      1        0       0      0
c      0        0       1      1 
d      0        1       1      1

Я хочу закончить с чем-то вроде этого, чтобы оценить соотношение между категориями (правильный ли тепловой график?

      cat1    cat2    cat3    cat4
cat1    1      0       0       0
cat2    0      2       2       1
cat3    0      2       3       2
cat4    0      1       2       2

ИтакЯ думаю, что я хочу сделать что-то похожее на count, если содержит cat1 и cat 2, count, если содержит cat 1 и cat 3 и т. Д. И т. Д.

Есть ли простой способ сделать это в Python?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Используйте matrix multiplication - dot путем транспонирования DataFrame:

df = df.T.dot(df)
print (df)
     cat1  cat2  cat3  cat4
cat1     1     0     0     0
cat2     0     2     2     1
cat3     0     2     3     2
cat4     0     1     2     2
0 голосов
/ 27 мая 2018

Выезд numpy.inner:

import numpy as np
pd.DataFrame(np.inner(df.T, df.T), 
             index=df.columns,
             columns=df.columns)

      cat1  cat2  cat3  cat4
cat1     1     0     0     0
cat2     0     2     2     1
cat3     0     2     3     2
cat4     0     1     2     2
...