从公司内部建立网络api
chp的Python项目详细描述
chpy
英国公司house api的包装器,用python编写,使用networkx构建的网络分析工具。
注释
这个工具使用户能够从英国公司内部api的信息构建企业网络。 网络是通过以下过程构建的:
- 用户输入一个有效的英国公司编号,以及一个api密钥和一些所需的迭代。
- CHPY从该公司提取有关其管理人员和重要控制人员(PSC)的信息。
- 人员/PSC与被搜索公司之间的关系将添加到边缘列表中。
- 如果一个官员是一个有效的英国公司,它将被添加到一个公司列表中,以便在以后的迭代中进行检查。注意:在0.1.1a中,此功能不扩展到pscs。
- 然后,chpy使用模糊匹配和出生日期/地址检查来验证搜索结果,在companies house api中搜索其他公司的每个官员/pscs约会。
- 然后将这些关系添加到edge列表中,并将公司添加到company表中,以便在以后的迭代中进行分析。
- 进程循环到用户指定的深度。
0.1.1中的新功能
- 主要功能——get_company_network()——已经过全面的检查:
- 一种新的、更清晰的数据采集结构。
- 迭代深度。
- 从python中输出到networkx图形和pandas数据帧。
- 运行时输出更清晰,但是进度条功能暂时被挂起。
工作原理
用法
这个工具目前打算与jupyter笔记本一起使用,我在“example”目录中提供了一个示例。 我相信大多数用户想要做的只是从他们感兴趣的公司建立一个网络。 强烈建议将深度设置为1或2。深度是指数级的,错误也是指数级的(见下面的“警告词”)。
pip install chpy
from chpy.build import *
# You'll need your own API key from Companies House and to load
# it as a variable in Python.
with open('API_KEY.txt') as f:
api_key = f.read().strip()
graph, edge_list, company_table = get_company_network("a valid company number", api_key, 2)
上面的代码以networkx格式返回一个图形,并以pandas数据帧的形式返回一个edge_list和company_table。
此外,chpy将三个对象输出到./data/company_number_depth/:
- 一个CSV格式的节点列表
- CSV格式的一个边缘列表
- 一个GEXF格式的图形,用于GEPHY或类似的图形
一句警告的话
这在很大程度上仍在开发中,而且由于公司内部(ch)数据的维护和结构方式,使用此工具时需要一定程度的谨慎。值得注意的是:
- ch不维护已经停业一段时间的公司的信息,因此请注意,在许多情况下,生成的数据将是不完整的。
- 同样,不活跃的官员也不一定总是有。
- 由于ch-api所使用的唯一标识符系统的局限性,该软件广泛使用模糊匹配来建立公司和官员之间的链接。该系统的设计是保守的关系,它建立,需要出生日期(如果可用)和位置匹配,因此可能错过关系,如果一个强大的匹配没有找到。
- 同样,考虑到ch search api和模糊匹配的使用,尽管有上述的保护措施,在特殊情况下,“误报”仍然可能发生。