如何根据 pandas 中的不同列创建关联?
How to create correlation based on different columns in pandas?
我有这样的数据:
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
您可以计算每列的列值,然后计算每个索引值的 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
IIUC 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
我有这样的数据:
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
您可以计算每列的列值,然后计算每个索引值的 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
IIUC 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