联合发文政策主体合作网络图

本文介绍了如何通过政策文本数据,使用Python处理并转化为矩阵型,以便在Gephi中创建政策主体合作网络图谱。作者分享了数据预处理步骤,包括去除单部门政策、构建矩阵和使用Python脚本自动化过程。最后展示了Gephi的可视化分析过程。
摘要由CSDN通过智能技术生成

 一、引言

  最近在导师的push下,需要分析政策发布主体之间的合作关系,以此看出在推动某一领域政策完善发展的过程中,哪一个或哪些部门能够担任牵头角色,哪些部门合作较为紧密。但是本小白在CSDN网站以“政策主体合作”“联合发文”“政府机构网络分析”等为关键词进行搜索,并未发现较为完善的教程指导,在经过几天的学习后,略微有些收获,这篇博客就诞生了。

图1  政策主体合作网络图谱例图

二、数据准备

    我们首先要明确这其实是一项可视化分析工作,因此首先要选择一款可视化分析软件,在进行相关的文献阅读后,发现文本分析领域的学者大多采用Gephi软件(https://gephi.org/,其中一个原因是该款软件免费上手也较为容易,目前仍在不断更新,最新版本为0.10.1,本小白就选择了Gephi来制作政策主体合作网络图谱

图2  Gephi启动界面

     在网络上进行了一些 Gephi学习后,发现制作政策主体合作网络图谱所需的数据类型是矩阵型,如下图所示。

图3  矩阵型数据

    如何理解这个矩阵呢,该矩阵首行和首列均是政府机构名称,且顺序一致。以第三行第二列单元格为例,该单元格是国家文物局和国家粮食和物资储备局的交叉部分,意味着国家文物局和国家粮食和物资储备局联合发布一份政策文本,如果我们是分析多部分联合发布政策,矩阵上的对角单元格值应都为0

图4  单元格

    但是本小白在进行相关政策文本收集的工作时,所得到的数据类型往往是这样(以北大法宝为例):

图5  北大法宝导出数据

    观察制定机关列,怎么样才能得到上面的矩阵型数据呢?

图6  制定机关列

    首先,需要剔除单部门发布的政策

图7  单部门政策

图8  剔除后的多部门政策

    接着,如果我们需要制作矩阵型数据,我们需要知道一共有哪些政府部门参与了政策文本发布。通过简单的手工统计发现有以下部门:

水利部

应急管理部

国家质量监督检验检疫总局(已撤销)

科学技术部

住房和城乡建设部

工业和信息化部

文化和旅游部

国家体育总局

国家林业和草原局

交通运输部

国家能源局

国家发展和改革委员会(含原国家发展计划委员会、原国家计划委员会)

国家市场监督管理总局

国家文物局

生态环境部

国家乡村振兴局

民政部

图9  政策发布部门

    然后,构建矩阵,统计数据。矩阵的结构如下图所示:

图10  矩阵结构

    最后需要将数据补齐

图11  待补齐数据

   

图11  完整数据

    好了,到这里数据的准备工作就做完了。嘿嘿,这才只有4篇政策文本,真正做科研的时候,几千篇政策文本很常见,想要制作政策机构矩阵自然不能靠手工,需要借助一些科技的力量

    本小白也自创了一套Python代码,可以实现上述工作,代码如下:

import openpyxl
import pandas as pd
# 读取Excel文件(注:文件第一行不能有制定机关,呈现内容即可)
workbook = openpyxl.load_workbook("输入文件.xlsx")
sheet = workbook.active

# 创建一个空集合存储政府机关
gov_agencies = set()

# 遍历第一列
for cell in sheet["A"]:
    # 按分号分割政府机关
    agencies = cell.value.split(";")
    for agency in agencies:
        # 添加政府机关到集合中
        gov_agencies.add(agency.strip())
print(gov_agencies)

# 输出不重复政府机关的数量
print("一共有{}个不重复的政府机关".format(len(gov_agencies)))

# 创建一个空的矩阵,行和列都是政府机关
matrix = pd.DataFrame(0, index=gov_agencies, columns=gov_agencies)

# 遍历每一行,计算联合发文情况
for row in sheet.iter_rows(min_row=1, values_only=True):
    agencies = row[0].split(";")
    # print(agencies)
    for i in range(len(agencies)):
        for j in range(i+1, len(agencies)):
            # 在矩阵对应的位置+1
            matrix.loc[agencies[i].strip(), agencies[j].strip()] += 1
            matrix.loc[agencies[j].strip(), agencies[i].strip()] += 1

# 打印矩阵
print(matrix)

# 创建一个 Excel writer 对象
writer = pd.ExcelWriter('输出文件.xlsx')

# 将矩阵 DataFrame 写入到 Excel 文件中的一个新工作表
matrix.to_excel(writer, sheet_name='Matrix')

# 保存并关闭 Excel writer
writer.save()

   图12  Python代码

使用这套代码有一个注意点

        输入文件为excel文件,文件中数据有严格规定:不需要列名,政策制定机关中的“;”必须是英文状态下输入。

图13  输入文件格式要求

三、可视化分析

  下面进行可视化工作,打开Gephi,我们可以看到如下界面:

    1.新建工程

2.进入数据资料界面

3.导入数据

  

 

 

 4.可视化分析

 

  哈哈,政策数量太少效果看起来不太明显。大家可以自行尝试。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值