基于Neo4j和Tushare数据构建小型金融知识图谱

作者简介:合肥工业大学经济学院学生

前言

看到米哥和Libra的关于知识图谱的文章,又在近期完成证券分析的课设,想到了关联方分析能不能用知识图谱进行可视化操作,就运用neo4j进行了小型金融知识图谱尝试,基于tushare数据实现股票与行业、股东、概念股、高管信息的知识图谱。

本项目主要实现逻辑:

1.数据结构化

2. 配置neo4j

3. 数据处理

4. 导入neo4j

5. 查看关联信息

数据获取

Libra获取的关联数据主要是行业信息,我这次做的全一点,主要采用的API接口有:stock_basic、top10_holders、concept、concept_detail。同时我还对东方财富中的高管信息进行爬取了,这个就不详述了,用requests包或者其他进行爬取(刚学习不会scrapy框架,代码差轻喷)。

注:红框为需要获取的数据

获取数据代码如下,将获取的数据储存到csv文件中,neo4j支持csv格式:

获取所有concept_detail和holders用了一个蠢办法,本人自学学艺不精,望谅解,整个代码运行速度非常慢,大概10多分钟才结束,请教大佬如何优化代码。

配置Neo4j

因为没有深入学习过,就简单介绍一下neo4j。neo4j是一个高性能的,NOSQL图形数据库。比传统的关系型数据库快1000倍,neo4j将关系分为节点(nodes)和关系(relationships)两部分,节点和关系均可以有不同的属性。

下载Ne4j

官网:网页链接

好像需要注册才能下载,下载桌面版或者community版本。

2

配置Ne4j

配置系统环境变量

3

运行Ne4j

以管理员身份在cmd运行neo4j.bat console

正常运行看见starting就是成功了,配置好了会有下面弹出(不需要重复启动,一个坑)

4

访问Ne4j

neo4j是在网址查看数据库的,所以在浏览器使用http://localhost:7474/browser/网址查看即可。第一次启动会出现修改账号密码,默认账号密码均为neo4j。

5

注册Ne4j服务

以管理员身份在cmd运行 neo4j install-serivce

开启neo4j服务:neo4j start

停止neo4j服务:neo4j stop(导入新数据库时需要用,或者选择重启)

重启neo4j服务:neo4j restart

数据处理

完成数据爬取和neo4j配置,neo4j对数据有一定要求,需要对数据进行处理才能导入neo4j。

数据分两种类型,节点数据和关系数据,节点数据必须包含:ID, :LABEL,关系数据中必须包含:START_ID, :END_ID, :TYPE三个。

节点数据文件有concept.csv, execustive.csv, holders.csv, industry.csv等四个文件;

注意:其中:ID必须唯一,所以控制一下,:ID也可以是英文或中文

stock.csv文件

executive.csv文件

industry.csv文件

holders.csv文件

concep.csv文件

关系数据文件有execustive_stock.csv, holders_stock.csv, stock_concept.csv, stock_industry.csv等四个文件。(这里都差不多就展示两个文件)

注意:开始和结束代表方向,需要注意一下。

stock_cocept.csv文件

holders_stock.csv

需要注意的事项:

1. 每一个高管或行业或持股人应该具有唯一的ID

2.ID和ID之间一定要有对应,可以一对多或多对多,但一定要有对应,不然会报错找不到对应关系

3. 保存之后用文件另存为utf-8编码模式,不然导入neo4j后会乱码

4.股票代码在csv文件进行编辑后保存,在txt文件中发现少0,可以在Excel中使用公式

5. 在holders.csv文件中可以只有一个报告期的,不然做出来的图会出现4条线关系

导入Ne4j

导入数据

neo4j导入有两种方式,可以在浏览器中输入命令手动导入,也可以通过cmd运行neo4j-admin import进行导入,本文采用第二种方式。

在cmd模式下转到neo4j中的bin目录,新建import目录,将处理的数据复制到其中。

cmd运行代码:

其中--mode=csv代表导入数据类型,--database=stock.db代表导入数据库名称,--nodes代表导入节点,--relationships代表导入关系。

如果直接把数据放在bin文件中,可省去我的import/

数据库文件在\neo4j-community-3.5.5\data\databases

2

连接数据库

参考文章:网页链接

本文采用简单的方式,直接修改conf文件下的neo4j.conf文件进行连接

对标红代码进行修改,去掉前面#,修改后面数据库文件,之后cmd重启neo4j服务器即可连接成功。

查找关联信息

如果你的网页已经能显示如下页面说明你已经成功了,最后进行数据的查看,记得检查数据库名称。

查看所有数据(勿试,会卡)

查看一个企业关联方

就会这两句,然后就是点点点的事情了,查询代码还需要具体学一下。

002303美盈森股票具体情况:

修改节点属性、颜色方法:

小结

至此,所有工作都完成了,除了对股票高管、行业、投资方进行关联分析,还可以将公司新闻、增持股变化加入其中,但数据爬取困难程度也随之提高,本文主要对自己学习的一个总结,同时希望哪位大佬教教我怎么基于时间做知识图谱。

对源代码和本文数据文件有需要的小伙伴,请在本公众号私信回复“小图谱”获得打包下载链接。

更多内容请关注Tushare官方微信公众号“挖地兔”,获得更多内容。

【扩展阅读】

利用Tushare数据实现知识图谱效果

知识图谱及金融相关

Python+SQL无敌组合,值得你Pick!

利用Python创建不同资产组合的基本框架

如何正确使用Pandas库提升项目的运行速度?

如何提升动量因子策略的表现?

利用Python创建不同资产组合的基本框架

被动市场有效性是否真的有作用?

中国数据智能管理峰会7月在上海举办,有兴趣的朋友可以点击“阅读原文”报名参加。

雪球转发:1回复:1喜欢:1

全部评论

dfenglei06-06 07:38

neo4j自己研究没有问题,但商用是收费的。