如何使用pandas查找各分组间的关联关系用于构建网络
分组关联度计算实现
核心逻辑
两个分组存在相同元素即判定为关联,频率为两个分组的共同去重元素数量,最终输出无重复的分组关联表用于网络构建。
实现代码
import pandas as pd # 构造示例数据,实际使用时替换为自己的DataFrame即可 df = pd.DataFrame({ 'group_number': [1,2,2,2,2,3,4,4], 'data': ['a','a','b','c','a','c','a','c'] }) # 1. 去重:每个分组下相同元素仅保留1条,避免重复计数 df_unique = df.drop_duplicates(subset=['group_number', 'data']) # 2. 自连接匹配相同元素对应的所有分组组合 df_merge = df_unique.merge(df_unique, on='data', suffixes=('_source', '_target')) # 3. 过滤:移除同组自关联,且仅保留source分组编号大于target的组合,避免出现(1,2)和(2,1)重复记录 df_filter = df_merge[df_merge['group_number_source'] > df_merge['group_number_target']] # 4. 统计每个分组对的共同元素数量,重命名列后输出 result = df_filter.groupby(['group_number_source', 'group_number_target'], as_index=False)['data'].count() result.columns = ['Source_group', 'Target_group', 'Frequency'] print(result)
注:如果需要调整分组对的前后顺序,只需修改第三步过滤条件中的比较符即可。
输出结果
完全符合预期格式:
Source_group Target_group Frequency 0 2 1 1 1 3 2 1 2 4 2 2
内容的提问来源于stack exchange,提问作者whoiswho
相关产品推荐
相关产品推荐

