ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Excel整理CSV导入Gephi:最稳的网络图数据准备与出图全流程

Excel整理CSV导入Gephi:最稳的网络图数据准备与出图全流程 1. 为什么用Excel整理CSV再喂给Gephi是最稳的路子很多人第一次打开Gephi看到那个黑乎乎的界面就懵了。菜单栏里翻半天找不到“导入Excel”的按钮数据实验室里拖进去一个xlsx文件直接报错于是转头去搜“Gephi怎么导入Excel”结果搜出来的教程要么让你装插件要么让你写Python脚本。其实最省事的办法就摆在眼前把Excel另存为CSV再导入Gephi。这条路子我用了不下五十个网络图项目从社交关系分析到文献共被引网络从来没翻过车。Gephi原生支持的表格格式只有CSV、TSV和GDF这几种xlsx它压根不认。CSV本质上就是纯文本用逗号分隔字段任何工具都能读写Gephi解析起来也最稳定。Excel的作用不是“导入”而是“整理”——把原始数据里的脏东西洗掉把节点表和边表拆清楚把编码统一成UTF-8把多余的合并单元格、公式、格式全部清空。整理完之后另存为CSVGephi那边点一下“导入电子表格”数据就进去了。这套流程适合谁适合所有不想写代码、不想装插件、只想快速出图的人。你不需要懂Python的pandas不需要会R语言的igraph只要会用Excel的基本筛选和排序就能把数据收拾得服服帖帖。下面我把整个流程拆开讲从数据准备到Gephi出图每一步都配上我实际踩过的坑和验证过的参数。2. 数据准备节点表和边表到底该怎么拆2.1 网络图的数据结构基础任何网络图都由两部分组成节点和边。节点是图里的点边是连接点的线。用Excel整理数据核心就是把这两类信息分别放进两个工作表里。节点表至少需要一列叫“Id”或者“Label”里面是每个节点的唯一标识。比如分析公司高管网络节点表就是所有高管的姓名分析论文引用网络节点表就是所有论文的标题或DOI。边表至少需要两列叫“Source”和“Target”分别表示边的起点和终点。比如张三和李四有合作关系边表里就写一行“张三,李四”。我见过太多新手把节点和边混在一张表里结果导入Gephi之后要么节点重复要么边对不上。正确的做法是节点表只放节点属性边表只放连接关系。节点表可以有多列比如“Id”“Label”“Category”“Weight”分别表示编号、显示名称、分类、权重。边表也可以有多列比如“Source”“Target”“Weight”“Type”分别表示起点、终点、权重、类型。2.2 用Excel拆分节点表和边表的实操步骤假设你手里有一份原始数据长这样姓名合作者项目张三李四A张三王五B李四王五A王五赵六C这是典型的“边列表”格式每一行代表一条合作关系。你要做的第一件事是提取所有不重复的节点。在Excel里选中“姓名”和“合作者”两列复制到一个新工作表然后用“数据”选项卡里的“删除重复项”功能得到一张干净的节点列表。这一步看起来简单但有个细节删除重复项之前先把两列数据粘贴成一列否则Excel会把“姓名”和“合作者”当成两个独立的维度去重结果就不对了。具体操作把“姓名”列复制到A列把“合作者”列复制到A列下面然后选中A列整列点“数据”→“删除重复项”→“确定”。这样你就得到了所有出现过的节点每个只出现一次。然后给每个节点加一个编号从1开始递增放在B列列名写“Id”。A列改名叫“Label”。节点表就做好了。边表的整理更简单保留原始的“姓名”和“合作者”两列把列名改成“Source”和“Target”。如果原始数据里有“项目”列可以把它作为边的属性保留列名改成“Type”或者“Label”。注意边表里的Source和Target必须和节点表里的Id或者Label完全对应大小写、空格、全半角都不能有差异。我一般建议用Id做匹配因为数字不会出现编码问题。2.3 编码问题为什么你的CSV导入Gephi后全是乱码这是新手遇到最多的坑。Excel在Windows中文环境下默认保存CSV时用的是GBK编码而Gephi默认按UTF-8读取。结果就是你在Excel里看着好好的中文导入Gephi之后变成了一堆问号或者方块。解决办法有两个。第一个是在Excel里另存为的时候选择“CSV UTF-8逗号分隔”格式。这个选项在Excel 2016及以上版本都有Mac版Excel也有类似选项。第二个是用记事本打开CSV文件另存为的时候把编码改成UTF-8。我推荐第一种因为不用来回切换工具。如果你用的是Mac版Excel另存为CSV的时候默认就是UTF-8但要注意换行符的问题。Mac版Excel保存的CSV用的是CR回车换行而Gephi期望的是LF换行或者CRLF。这个问题在Gephi 0.9.2之后的版本已经很少见了但如果你导入后发现所有数据挤在一行那就是换行符的问题。解决办法是用VS Code或者Sublime Text打开CSV把换行符统一改成LF再保存。还有一个隐藏的坑Excel有时候会在CSV的每个字段前后自动加双引号尤其是字段里包含逗号的时候。Gephi能正确处理带引号的字段但如果引号不配对就会解析失败。我建议在Excel里整理数据时避免在字段内容里使用逗号用空格或者分号代替。如果实在需要逗号确保Excel保存时正确转义。3. 在Gephi里导入CSV并生成网络图3.1 导入节点表的正确姿势打开Gephi点击菜单栏的“文件”→“导入电子表格”。在弹出的对话框里找到你保存好的节点表CSV文件。注意Gephi的导入对话框里有一个“分隔符”选项默认是逗号如果你用的是TSV就改成制表符。下面的“字符集”选项一定要选“UTF-8”除非你确认你的CSV是GBK编码。导入之后Gephi会显示一个预览窗口让你确认列的类型。这里有个关键设置把“Id”列的类型改成“字符串”或者“整数”把“Label”列的类型改成“字符串”。如果你想让节点显示为中文名称Label列必须存在且类型正确。如果Id列是数字Gephi会把它当成节点编号如果Id列是文字Gephi会把它当成节点标识符。两种都可以但边表里的Source和Target必须和节点表的Id类型一致。预览窗口下方有一个“导入为”选项默认是“节点表”。确认无误后点“下一步”然后选择“追加到现有工作区”或者“导入到新工作区”。我一般选“导入到新工作区”这样不会把之前的数据搞乱。3.2 导入边表时的关键参数节点表导入完成后重复同样的步骤导入边表。边表的预览窗口里Source和Target列的类型必须和节点表的Id列一致。如果节点表的Id是整数边表的Source和Target也必须是整数如果节点表的Id是字符串边表的Source和Target也必须是字符串。类型不匹配的话Gephi会创建一堆孤立的节点边全部连不上。边表里如果有“Weight”列把它的类型改成“浮点数”或者“整数”。这个权重会影响后续的布局算法和节点大小。如果没有Weight列Gephi默认每条边的权重是1.0。边表里如果有“Type”列可以把它改成“字符串”用来区分不同类型的边比如“合作关系”和“引用关系”。导入边表的时候Gephi会问你是“有向”还是“无向”。如果你的网络里边的方向有意义比如A引用B和B引用A是两回事就选“有向”如果只是合作关系A和B连在一起就行就选“无向”。这个选择会影响后续的度统计和布局效果。3.3 布局算法选择从随机到力导向数据导入之后你会看到一团乱麻似的节点堆在画布中央。这时候需要跑一个布局算法让节点自动散开。Gephi内置了十几种布局新手最常用的是ForceAtlas 2和Fruchterman Reingold。ForceAtlas 2是我最推荐的它模拟物理里的斥力和引力让连接的节点靠拢不连接的节点推开。参数方面Scaling控制整体散开程度默认10.0如果节点挤在一起就调到20或30Gravity控制节点向中心的聚拢程度默认1.0如果图太散就调到2.0或3.0Speed控制计算速度默认1.0调高会更快但可能不稳定。我一般跑500到1000次迭代点“运行”之后看节点不再明显移动就点“停止”。Fruchterman Reingold适合节点数量较少少于500个的网络跑出来的图比较规整但节点多了会非常慢。如果你的网络超过1000个节点直接用ForceAtlas 2别犹豫。跑完布局之后点“文件”→“保存”把项目存成gephi格式。这一步很重要因为Gephi有时候会崩溃不保存的话前面跑的布局全白费。4. 外观设置让网络图从“能看”变成“好看”4.1 节点大小和颜色的映射逻辑布局跑完之后图能看了但还不够好看。Gephi的外观面板里有两个核心功能节点大小和节点颜色。这两个都可以根据数据属性来映射。节点大小通常映射“度”Degree也就是一个节点连接了多少条边。度越大节点越大这样核心节点一眼就能看出来。操作路径外观→节点→大小→排名→选择“Degree”→设置最小尺寸和最大尺寸。我一般设最小10最大50具体数值根据节点数量调整。节点少的时候可以设大一点节点多的时候设小一点。节点颜色通常映射“模块化”Modularity或者“分类”属性。模块化是Gephi内置的社区发现算法能把网络分成若干个簇每个簇用不同颜色表示。操作路径外观→节点→颜色→分区→选择“Modularity Class”→应用。如果你在节点表里有一列“Category”也可以直接映射这一列效果一样。4.2 标签显示和防重叠技巧节点标签默认是隐藏的需要手动打开。在画布下方的工具栏里有一个“T”字图标点一下就能显示标签。但节点多了之后标签会互相重叠根本看不清。解决办法是调整标签的显示阈值。在外观→节点→标签→排名里选择“Degree”设置一个最小阈值比如只显示度大于5的节点的标签。这样核心节点的名字能看清边缘节点就不显示了。另外在布局面板里有一个“Label Adjust”布局专门用来微调标签位置跑个几十次迭代就能让标签不再重叠。还有一个技巧把节点标签的字体调小颜色调成深灰色背景调成半透明白色。这样即使标签有轻微重叠也能看清主要内容。具体操作在画布下方的字体设置里把字号从默认的12改成8或10颜色选深灰背景选白色带透明度。4.3 导出高清图片的参数设置图调好之后点“文件”→“导出”→“SVG/PDF/PNG”。我推荐导出PDF或者SVG因为它们是矢量格式放大不会模糊。如果非要导出PNG把分辨率设成300 DPI以上宽度设成3000像素以上这样打印出来也清晰。导出之前记得在“预览”窗口里调整边距默认的边距太小节点会被切掉。把边距设成50到100像素具体看图的尺寸。另外如果图里有中文标签导出PDF时确保字体嵌入否则换台电脑打开可能变成乱码。Gephi默认会嵌入字体但如果你用的是特殊字体最好在导出设置里勾选“嵌入字体”选项。5. 常见问题与排查技巧实录5.1 导入CSV后节点全部孤立怎么办这是最典型的问题原因几乎只有一个边表的Source和Target与节点表的Id不匹配。排查步骤第一检查两边的列名是否完全一致大小写、空格都不能差第二检查数据类型是否一致节点表Id是整数边表Source也必须是整数第三检查是否有隐藏字符比如从网页复制数据时带进来的不可见空格。我一般用Excel的“查找替换”功能把边表里的Source和Target列里的空格全部替换掉然后再导入。如果还不行就把节点表和边表都另存为CSV UTF-8格式用记事本打开肉眼检查前几行的数据格式。5.2 中文标签显示为方块的解决方案这个问题分两种情况。第一种是CSV编码不对解决办法前面说了另存为CSV UTF-8。第二种是Gephi的字体设置问题。在Gephi的“工具”→“选项”→“字体”里把默认字体改成支持中文的字体比如“微软雅黑”或者“思源黑体”。Mac系统下改成“PingFang SC”或者“Heiti SC”。如果改了字体还是方块那就是CSV文件本身的问题。用记事本打开CSV看中文是否正常显示。如果记事本里就是乱码说明Excel保存的时候编码没选对重新另存为CSV UTF-8。5.3 布局跑得太慢或者卡死的处理办法Gephi处理超过5000个节点的网络时会非常吃力尤其是ForceAtlas 2布局。解决办法有三个第一在导入之前用Excel筛选只保留度大于某个阈值的节点把边缘节点删掉第二在布局面板里把“Speed”调低虽然慢但不容易卡死第三用Gephi的“过滤”功能先只显示一部分节点跑完布局再取消过滤。我个人的经验是超过3000个节点的网络最好先在Excel里做一轮粗筛把只出现一次的节点删掉只保留核心网络。这样节点数能减少一半以上布局速度会快很多。5.4 常见问题速查表问题现象可能原因解决办法导入后节点全部孤立Source/Target与Id不匹配检查列名、类型、隐藏字符中文显示为方块CSV编码不是UTF-8另存为CSV UTF-8改Gephi字体布局跑得极慢节点数过多Excel预筛选降低Speed导出图片模糊分辨率太低导出PDF/SVG或PNG设300 DPI标签重叠严重显示阈值太低按Degree过滤标签跑Label Adjust边表导入后报错字段里有逗号未转义用分号代替逗号或加双引号Mac版Excel保存的CSV换行符异常CR换行用VS Code改成LF节点颜色映射无效属性列类型错误在导入预览里改成字符串或整数6. 一个完整的实操案例从Excel到Gephi出图6.1 案例数据说明假设我们要分析一个10人小团队的协作网络。原始数据是一张Excel表记录了每个人参与的项目和合作者。数据长这样姓名合作者项目张三李四项目A张三王五项目B李四王五项目A王五赵六项目C赵六孙七项目C孙七周八项目D周八吴九项目D吴九郑十项目E郑十张三项目E李四周八项目B这个网络有10个节点10条边。节点是10个人边是合作关系。项目列可以作为边的属性用来区分不同项目里的合作。6.2 Excel整理步骤详解第一步提取节点。把“姓名”列和“合作者”列分别复制到新工作表的两列然后把“合作者”列的数据复制到“姓名”列下面形成一列包含所有出现过的名字。选中这一列点“数据”→“删除重复项”得到10个不重复的名字。在B列加上编号1到10列名写“Id”A列列名写“Label”。第二步整理边表。把原始的“姓名”“合作者”“项目”三列复制到新工作表列名分别改成“Source”“Target”“Type”。检查Source和Target里的名字是否都在节点表的Label里出现过如果有拼写差异用查找替换统一。第三步保存CSV。节点表另存为“nodes.csv”边表另存为“edges.csv”格式都选“CSV UTF-8逗号分隔”。保存之前把工作表里多余的格式、公式、合并单元格全部清掉只保留纯文本。6.3 Gephi导入和出图全流程打开Gephi新建项目。点“文件”→“导入电子表格”选“nodes.csv”。预览窗口里把“Id”类型设为整数“Label”类型设为字符串。导入为“节点表”追加到新工作区。再点“文件”→“导入电子表格”选“edges.csv”。预览窗口里把“Source”和“Target”类型设为整数“Type”类型设为字符串。导入为“边表”追加到现有工作区。导入时选择“无向”因为合作关系是对称的。在布局面板里选“ForceAtlas 2”Scaling设15Gravity设2Speed设1点“运行”跑500次迭代后点“停止”。然后点“Label Adjust”跑50次迭代让标签散开。在外观面板里节点大小映射“Degree”最小10最大40节点颜色映射“Modularity Class”应用。在画布下方打开标签显示按Degree过滤只显示度大于2的节点标签。最后点“文件”→“导出”→“PDF”边距设50导出。一张清晰的团队协作网络图就出来了。6.4 案例中的实操心得这个案例里我故意用了10个节点的小数据方便你一步步跟着做。实际项目中节点数可能上百上千但流程完全一样。关键区别在于节点多了之后Excel的删除重复项会慢一些Gephi的布局会久一些但核心逻辑不变。有一个细节值得注意边表里的“Type”列在Gephi里可以用来过滤边。比如你只想看项目A的合作关系可以在过滤面板里按Type筛选只显示Type为“项目A”的边。这个功能在分析多层网络时特别有用。另外如果你在Excel里给节点加了“Category”列比如把10个人分成“技术”“产品”“运营”三类导入Gephi后可以直接用这一列映射颜色比跑模块化算法更直观。前提是Category列的值必须是字符串不能是数字。7. 进阶技巧让Gephi网络图更有信息量7.1 用Excel计算节点属性再导入Gephi内置的统计功能有限很多属性其实可以在Excel里先算好再作为节点表的列导入。比如“度”Degree就是每个节点在边表里出现的次数。在Excel里用COUNTIF函数就能算COUNTIF(边表!A:A, 节点表!A2) COUNTIF(边表!B:B, 节点表!A2)。这个公式统计某个名字在Source列和Target列里出现的总次数就是该节点的度。类似地可以算“加权度”Weighted Degree把每条边的Weight加起来。如果边表里有Weight列用SUMIF函数分别对Source和Target求和再相加。这些属性导入Gephi后可以直接用来映射节点大小比在Gephi里跑统计更灵活。7.2 边权重和节点权重的联动设置边权重影响布局的紧密程度节点权重影响节点大小。两者配合好了图的信息量会大幅提升。具体操作在边表里加一列“Weight”值越大表示关系越强。导入Gephi后在布局面板里勾选“使用边权重”ForceAtlas 2会根据权重调整边的长度权重大的边更短权重小的边更长。节点权重可以用Excel算好的“加权度”列导入后在节点大小映射里选这一列。这样核心节点不仅连接多而且连接强在图上会显得又大又居中。7.3 导出数据到Excel做二次分析Gephi不仅能导入还能导出。跑完布局和统计之后点“文件”→“导出”→“表格”可以把节点和边的所有属性导出成CSV。这些CSV里包含了Gephi计算出来的模块化类别、度、加权度、离心率等指标。你可以把这些CSV再导回Excel用数据透视表做进一步分析比如统计每个模块的节点数量、计算模块内的平均度等。这个来回倒腾的流程听起来麻烦但实际做起来很快。Excel负责数据清洗和基础计算Gephi负责布局和网络统计两边各取所长比在一个工具里死磕效率高得多。8. 我踩过的坑和给你的避坑清单第一个坑Excel的自动格式转换。你在Excel里输入“001”这样的编号Excel会自动把它变成“1”。如果节点表里用这种编号做Id边表里也必须是同样的格式否则对不上。解决办法是在输入编号之前先把单元格格式设成“文本”或者在编号前面加一个英文单引号。第二个坑CSV里的换行符。Excel保存CSV时如果某个字段内容里包含换行符比如从网页复制的多行文本Gephi解析时会出错。解决办法是在Excel里用“查找替换”把换行符替换成空格或者用CLEAN函数清理不可见字符。第三个坑Gephi的内存限制。默认情况下Gephi只分配了512MB内存处理大网络时会报“内存不足”。解决办法是找到Gephi安装目录下的gephi.conf文件把-J-Xmx512m改成-J-Xmx2048m或者更大具体看你电脑的内存。改完之后重启Gephi布局速度会明显提升。第四个坑Mac版Excel的CSV编码。Mac版Excel保存CSV时默认用UTF-8但有时候会带上BOM字节顺序标记Gephi读到BOM会把它当成第一个列名的一部分导致列名匹配失败。解决办法是用VS Code打开CSV把编码改成“UTF-8 without BOM”再保存。第五个坑节点标签里的特殊字符。如果节点名称里包含逗号、引号、换行符CSV解析会出问题。我一般建议在Excel里就把这些字符替换掉用下划线或者空格代替。比如“张三,李四”改成“张三_李四”。第六个坑Gephi的撤销功能有限。Gephi没有完整的撤销栈跑完布局之后如果发现参数不对只能重新导入数据再跑一遍。所以我的习惯是每次跑布局之前先保存项目文件跑完不满意就重新打开保存的文件而不是在同一个项目里反复调参数。第七个坑导出PDF时字体丢失。如果你在Gephi里用了系统特殊字体导出PDF到另一台电脑打开时可能变成默认字体。解决办法是导出时勾选“嵌入字体”或者直接用Gephi默认的字体Arial或Helvetica这两种字体几乎所有系统都有。第八个坑边表里的重复边。如果边表里有两行“张三,李四”和“李四,张三”Gephi会当成两条不同的边有向模式下或者一条边无向模式下。如果你不希望重复在Excel里用“删除重复项”之前先把Source和Target两列合并成一列排序确保A-B和B-A只保留一条。这份避坑清单是我做了几十个网络图项目之后总结出来的每一条都对应着至少一次真实的翻车经历。你照着做能省下大量试错时间。Gephi这个工具本身不算复杂难的是数据准备阶段的细节。Excel用好了Gephi就是点几下鼠标的事。
返回列表