我有两个相同数量的不同计算,并且我想研究从计算A迁移到B后将进行的bin迁移。是否有熊猫一线式为我提供具有迁移概率的矩阵数据框中两列的仓之间?
示例:
这是一个数据框:
df=pd.DataFrame({
'A':[1.1,1.3,1,2.2,2.1,2.3,3,3.1,3.2],
'B':[1.2,1.1,2.2,2.1,2,2.1,1.1,3.4,3.2]})
我可以进行简单的分档:
df['A']=np.floor(df['A']).astype(int)
df['B']=np.floor(df['B']).astype(int)
因此,鉴于此数据框:
A B 0 1 1 1 1 1 2 1 2 3 2 2 4 2 2 5 2 2 6 3 1 7 3 3 8 3 3
我想建立这个矩阵:
1 2 3 --------------- 1| 2/3 1/3 0 2| 0 1 0 3| 1/3 0 2/3
人们可以看到它显示了垃圾箱之间的迁移概率(确定,“频率”)。
我可能可以手工计算迁移概率,但是经验告诉我,总是有 熊猫oneliner可以使工作更简洁,更快捷。
Dataframe.corr()方法会将这两列视为变量,以在它们之间建立一个corellation矩阵。那不是我要找的东西。我正在寻找值之间的相关性。
答案 0 :(得分:1)
尝试一下
df_confusion = pd.crosstab(df['A'], df['B'])/df['A'].nunique()
O / P:
B 1 2 3
A
1 0.666667 0.333333 0.000000
2 0.000000 1.000000 0.000000
3 0.333333 0.000000 0.666667