你有没有想过,朋友圈里谁是那个最核心的人物?谁和谁其实是一伙的?别以为这只能靠感觉猜,其实在一张简单的表格里,就能把这些关系挖出来。关键就是——社交网络分析中的社区发现。
从微信群聊开始说事儿
假设你管理着几个产品相关的微信群,成员之间经常互相艾特、转发消息。你想知道哪些人总是一起冒泡,可能属于同一个兴趣小圈子。这时候,不需要复杂的图形工具,一个Excel或Google Sheets就能起步。
第一步,把聊天记录整理成“互动表”:每一行代表一次互动,比如A@了B,就记一笔。表格长这样:
发起者, 接收者, 互动次数
张三, 李四, 5
张三, 王五, 2
李四, 王五, 7
赵六, 孙七, 6
...
这张表看起来平平无奇,但它已经是一个“边列表”(edgelist),是网络分析的基本输入格式。
用公式算出谁和谁黏在一起
光看边列表还不够直观。你可以加一列“共同联系人计数”,用来推测两个人是否可能在同一个社区。比如,张三和李四都频繁联系王五,那他们仨很可能是一伙的。
在表格里新增一列,用类似下面的公式(以Google Sheets为例)计算两人之间的间接连接强度:
=ARRAYFORMULA(SUMIFS(C:C, A:A, E2, B:B, F2) + SUMIFS(C:C, B:B, E2, A:A, F2))
这里E2和F2分别是两个用户的姓名,这个公式能统计他们之间双向的互动总和。再配合数据透视表,把“发起者”作行,“接收者”作列,值设为互动次数,就能生成一个交互热力矩阵。
导出数据,扔进分析工具
当你觉得手动操作到头了,可以把这个表格导出为CSV,丢给Python处理。几行代码就能跑出社区结构:
import pandas as pd\nimport networkx as nx\nfrom community import community_louvain\n\ndf = pd.read_csv('interactions.csv')\nG = nx.from_pandas_edgelist(df, source='发起者', target='接收者', edge_attr='互动次数')\npartition = community_louvain.best_partition(G)\n\nfor node, comm in partition.items():\n print(f'{node}: 社区 {comm}')
输出结果会告诉你,张三、李四、王五都在社区0,而赵六和孙七在社区1——两个明显的小团体浮出水面。
回到表格,给社区打标签
把社区编号加回原来的表格,在新的一列写上每个人所属的组。然后用条件格式给不同社区上色,整个网络的结构一眼就清清楚楚。
你甚至可以按社区分组汇总互动频率,看看哪个小圈子最活跃。这些信息对运营拉群、推送内容、识别意见领袖都有实际作用。
别被“社交网络分析”这个词吓住,它不是非得用高大上的平台才能做。从你手头的表格出发,一步步拆解关系,社区发现其实就在几列数据之间。