有没有办法在 python 中为参与者组织者建立一个共现(频率)矩阵?

Posted

技术标签:

【中文标题】有没有办法在 python 中为参与者组织者建立一个共现(频率)矩阵?【英文标题】:Is there a way to build a co-occurrence (frequency) matrix for participant-organizer in python? 【发布时间】:2021-11-05 08:33:07 【问题描述】:

假设我们有一个如下所示的 Dataframe:

df = pd.DataFrame('participant_id' : [1608, 1608, 2089, 213, 1608, 1887, 2089, 4544, 6866, 2020, 2020],
               'organizer_id' : [1772, 1772, 1772, 1790, 1790, 1790, 1791, 1791, 1772, 1799, 1799])

如果我们打印上面的内容,我们会得到:

print(df)



  participant_id   organizer_id
0         1608        1772
1         1608        1772
2         2089        1772
3         213         1790
4         1608        1790
5         1887        1790
6         2089        1791
7         4544        1791
8         6866        1772
9         2020        1799
10        2020        1799

了解每个参与者以如下所示的共现矩阵的形式参与组织者任务的次数是很有价值的:

    1772  1790  1791  1799  
1608   2.   1.     0.    0 
2089   1.   0.     1.    0
213    0.   1.     0.    0 
1887   0.   1.     0.    0   
4544   0.   0.     1.    0
6866   1.   0.     0.    0
2020   0.   0.     0.    2

如何在 python 中从 Dataframe df 构建这样一个矩阵?

【问题讨论】:

【参考方案1】:
df.groupby(by=["participant_id", "organizer_id"]).size().unstack('organizer_id').fillna(0)

organizer_id    1772  1790  1791  1799
participant_id                        
213              0.0   1.0   0.0   0.0
1608             2.0   1.0   0.0   0.0
1887             0.0   1.0   0.0   0.0
2020             0.0   0.0   0.0   2.0
2089             1.0   0.0   1.0   0.0
4544             0.0   0.0   1.0   0.0
6866             1.0   0.0   0.0   0.0

【讨论】:

【参考方案2】:

这是与How to create co-occurrence matrix from pandas two column?重复的

使用pd.crosstab(df['participant_id'], df['organizer_id']) 获取您的输出矩阵。

【讨论】:

完美运行,遗憾的是我没有看到您分享的上一个问题。

以上是关于有没有办法在 python 中为参与者组织者建立一个共现(频率)矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在Interface Builder中为Auto Layout Constraints添加标识符?

有没有办法获得可以在 Python 中使用的最大整数? [复制]

在 Caffe 中为神经网络组织数据

有没有办法在 UILabel 中为 NSRange 获取 CGRects?

有没有办法在代码中为 RecyclerView 启用滚动条?

有没有办法在报表中为 Tablix 设置固定位置?