楼主: Philip_ltx
874 4

关系网络/网络关系/高管社会网络/数据构建思路【经验分享|python|实证研究】 [推广有奖]

  • 0关注
  • 2粉丝

本科生

38%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
0.2516
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
677 点
帖子
18
精华
0
在线时间
144 小时
注册时间
2022-3-1
最后登录
2024-10-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

最近在研究关系网络,需要构造程度中心度、中介中心度等多个变量。虽众多论文都给出了大致相同的构造方法,但是按照这些方法照葫芦画瓢还是比较难。现有的数据库CNRDS只有独立董事的数据,和我关注的不太一样因此只能自行构建数据。陈运森(2011)给出的构造方法很详细,但是需要用到Pajek,本人之前没有接触过社会网络分析,粗浅的学习了一下发现最重要的就是构建“高管ID-高管ID”.net的这个数据。本以为利用CSMAR的数据+Python可以很快构建出来,但是无奈数据量太大,运行时间过长,且容易出现内存泄露的情况。在几经探索之下,终于找到了一个可以在较低时间成本可复现(自行构建)的方法,因此分享出来,如有兴趣可交流优化方法:


[数据准备] CSMAR高管数据,至少包括证券代码,统计截止日期,人物ID

[运行环境] 主要瓶颈是内存,我的设备是16g内存

[具体过程]

1、 数据准备

CSMAR上下载的原始文件,利用pandas读入数据,以【统计日期、人员ID】为关键词进行分组,提取组内出现的所有证券代码,然后反向查询在这些公司任职的人员ID,构建出如下共线矩阵。(用时13小时,暂时没想出优化方案)

原始数据样子.png


构建的长数据.png

2、 长数据转化为宽数据在将数据构建“高管-高管”矩阵前,我先将其转化为了宽数据。按年份进行遍历,对于每年的数据,进行如下相同的操作。使用[co-occurrence].str.split(‘;’,expand=True)进行分列,构建出如下矩阵。可以看出每行中的ID,就是共现的ID,我们将这个数据标注为df。

高管-高管矩阵.png

其中由于共现的人数不一样,因此有些行的后面一些列是空的,这个问题在第三步解决。


3、 转化为“高管-高管”矩阵

对df进行转置为df_t,建立列名循环,通过df_t[某列列名].values (这种方法最快)获取每列的所有数据,在删除空缺值之后利用itertools包内的combinations方法求出每一列的所有组合。得到所有组合后去重,保存为nkl格式的文件。(请勿保存为excel,可能会超过最大长度)。运行25分钟。

宽数据.png


其实在这一步,很多人会产生不一样的想法,比如说不进行转置,通过iterrows/apply的方法进行遍历来求解,但是这样的速度很慢。(可能会慢上数百-数千倍之间,可参考,英文原文为HowTo Make Your Pandas Loop 71803 Times Faster | by Benedikt Droste | Towards DataScience、打不开可以看如何让你的pandas循环更快 - 简书 (jianshu.com))


4、 转化为net文件

将生成数据依次读为dataframe格式,然后利用pajek-tools包,pkl文件转化为net文件。我下载的源码在运行时会报错:to_csv() got an unexpected keyword argument‘line_terminator’;应该是开发者版本不一样,请将line_terminator更改为lineterminator即可正常运行(6分钟)

net文件.png

5、 利用自己擅长的方法进行网络分析

我之后使用Pajek进行分析(但是还是速度慢,所以我继续用了py),但是大同小异,请根据自己的情况进行工具选用

网络图.png

6、 计算网络中心度等一系列指标

在得到每年每个高管的网络中心度指标后,通过高管ID和企业代码Match,由此计算相应的指标


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 经验分享 实证研究 关系数据 经验分 stata数据处理 社会关系网络 人物关系网络 网络分析 社会网络分析

net文件.png (77.95 KB)

net文件.png

已有 1 人评分经验 论坛币 收起 理由
yyj_1976 + 50 + 30 鼓励积极发帖讨论

总评分: 经验 + 50  论坛币 + 30   查看全部评分

沙发
幸福就一起 发表于 2023-10-19 07:42:43 来自手机 |只看作者 |坛友微信交流群
用python能做出来吗?求分享code

使用道具

藤椅
Philip_ltx 发表于 2023-10-19 09:51:33 |只看作者 |坛友微信交流群
幸福就一起 发表于 2023-10-19 07:42
用python能做出来吗?求分享code
可以用python做出来。因为昨天才完成,代码、数据、说明文档还在整理,之后会分享一部分

使用道具

板凳
yyj_1976 在职认证  企业认证  发表于 2024-1-27 17:05:26 |只看作者 |坛友微信交流群
多谢分享

使用道具

报纸
junyun0315 在职认证  发表于 2024-3-14 11:41:02 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-10-18 11:35