Skip to main content
 首页 » 编程设计

python之数据透视表和计数

2025年05月04日25xxx_UU

我有一个数据集表明谁在哪些商店购物。

ID  Store 
1    C 
1    A 
2    A 
2    B 
3    A 
3    B 
3    C 

我可以使用数据透视表来确定购物者去其他商店的频率吗?我在想一个 3X3 矩阵,其中的列和行表示有多少人去了两家商店。

Desired output 
    A   B  C 
A   3   2   2 
B   2   3   1 
C   2   1    3 

请您参考如下方法:

可以用pd.crosstab()创建一个ID和Store的条件表,然后计算其转置和矩阵乘积本身,它应该产生你需要的东西:

mat = pd.crosstab(df.ID, df.Store)     
mat.T.dot(mat) 
 
#Store  A   B   C 
#Store           
#   A   3   2   2 
#   B   2   2   1 
#   C   2   1   2 

注意:由于只有两个 ID 访问了商店 B 和 C,我想对应的单元格应该是 2 而不是 3: