Как создать корреляцию на основе разных столбцов в pandas? - PullRequest
1 голос
/ 30 марта 2020

У меня есть такие данные:

Users_id        My_Fav         Bro_Fav          Friend_Fav
User0             BMW            VW                BMW
UserA             VW             Mercedes          Honda
UserB             Honda          Honda             VW
UserC             Mercedes       BMW               Mercedes
UserD             VW             BMW               BMW

Я хотел бы вывод для корреляции между столбцами и брендами и желаемый вывод будет выглядеть так:

                      My_Fav         Bro_Fav          Friend_Fav
BMW                     1               2                2
VW                      2               1                1
Honda                   1               1                1
Mercedes                1               1                1

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

Вы можете посчитать значения столбцов для каждого столбца, а затем sum для значений индекса, если необходимо преобразовать Users_id столбец в индекс на первом шаге:

#Users_id is column
df = df.set_index('Users_id').apply(pd.value_counts).sum(level=0)

#Users_id is index
#df = df.apply(pd.value_counts).sum(level=0)
print (df)
          My_Fav  Bro_Fav  Friend_Fav
BMW            1        2           2
Honda          1        1           1
Mercedes       1        1           1
VW             2        1           1
1 голос
/ 30 марта 2020

IIU C melt + crosstab

s=df.melt('Users_id')
s=pd.crosstab(s.value,s.variable)
variable  Bro_Fav  Friend_Fav  My_Fav
value                                
BMW             2           2       1
Honda           1           1       1
Mercedes        1           1       1
VW              1           1       2
...