Построить таблицу сопряженности в Python - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь построить таблицу сопряженности в Python, используя панд.Вот мои данные выглядят как в pandas dataframe

InvoiceNo Item Quantity
123        a     1
123        b     2
123        c     1
124        a     1
124        d     3
125        c     1
125        b     2

Итак, мне нужно создать таблицу, в которой я могу легко выбрать, какие предметы куплены вместе, как показано ниже

Предмет, купленный вместе:

   a  b  c  d
a  2  1  1  1
b  1  2  2  0
c  1  2  2  0
d  1  0  0  1

Здесь диагональные элементы представляют частоту элемента во всех счетах.

Как эффективно построить эту структуру?

1 Ответ

1 голос
/ 13 марта 2019

Используйте DataFrame.merge с перекрестным соединением с crosstab и для очистки имен индексов и столбцов DataFrame.rename_axis:

df = df.merge(df, on='InvoiceNo')
df = pd.crosstab(df['Item_x'], df['Item_y']).rename_axis(None).rename_axis(None, axis=1)
print (df)
   a  b  c  d
a  2  1  1  1
b  1  2  2  0
c  1  2  2  0
d  1  0  0  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...