前言
看了米哥和Libra关于知识图谱的文章,最近又完成了证券分析的课程设计,想到是否可以利用知识图谱来可视化关联方分析,所以用neo4j尝试了一个小型的金融知识图谱,基于tushare上的数据实现了股票、行业、股东、概念股、高管信息的知识图谱。
本项目的主要实现逻辑是:
1. 数据结构化
2.配置neo4j
3. 数据处理
4.导入neo4j
5.查看相关信息
数据采集
Libra获取的关联数据主要是行业信息。这次我做得比较全面。主要使用的API接口有:stock_basic、top10_holders、concept、concept_detail。同时,我还爬取了《东方财富》中的高管信息。我不会详细介绍这一点。我用的是requests包或者其他的来爬取(刚学scrapy框架,所以代码比较烂)。
注:红框表示需要获取的数据
获取数据的代码如下。将获得的数据存储在csv 文件中。 Neo4j支持csv格式:
import tushare as tsimport csvimport timeimport pandas as pdpro=ts.pro_api('1dbda79ce58d052196b7ddec1663d53e4ea20571195a1a6055aab0c7')#获取stock_basicstock_basic=pro.stock_basic(list_status='L', fields='ts_code, symbol, name, Industry')#为了方便起见,重命名该行稍后import neo4jbasic_rename={'ts_code': 'TS代码', 'symbol': '股票代码', 'name': '股票名称', 'industry': '行业'}stock_basic.rename(columns=basic_rename, inplace=True)#另存为stock.csvstock_basic.to_csv('stock.csv',encoding='gbk')#获取top10_holdersholders=pd.DataFrame(columns=('ts_code','ann_date','end_date','holder_name', 'hold_amount', 'hold_ratio'))# 获取range(3610): 中i 一年内所有上市股票股东信息(可以获取一个报告期) code=stock_basic['TS code'].values[i] top10_holders=pro.top10_holders(ts_code=code, start_date='20180101', end_date='20181231')holders=holders.append(top10_holders) time.sleep(0.3)#数据接口限制#另存为holders.csvholders.to_csv('holders 。 csv',encoding='gbk')#获取concept并查看概念类别数量concept=pro.concept()concept.to_csv('concept_num.csv',encoding='gbk')#获取concept_detailconcept_details=pd.DataFrame(列=('id','concept_name','ts_code','name'))for i in range(358): id='TS' + str(i)concept_detail=pro.concept_detail(id=id)concept_details=Concept_details .append(concept_detail) time.sleep(0.3)# 另存为concept_detail.csvconcept_details.to_csv('concept.csv',encoding='gbk') 我用了一个愚蠢的方法来获取所有concept_details和持有者。我不擅长自学。希望抱歉,整个代码运行速度非常慢,大约需要10分钟才能完成。请告诉我如何优化代码。
配置Neo4j
由于我没有深入研究过,所以简单介绍一下neo4j。 neo4j 是一个高性能的NOSQL 图形数据库。 Neo4j 比传统关系数据库快1000 倍,将关系分为两部分:节点和关系。节点和关系都可以具有不同的属性。
1下载Ne4j
官网:https://neo4j.com
好像需要注册才能下载,下载桌面版或者社区版。
2
配置Ne4j
配置系统环境变量
NEO4J_HOME=C:\download\Neo4j\neo4j-community-3.5.5-windows\neo4j-community-3.5.5Path=%NEO4J_HOME%\bin;
3
运行Ne4j
以管理员身份在cmd中运行neo4j.bat控制台
如果正常运行时看到启动成功,配置完后会出现如下弹窗(无需再次启动,坑)
4
访问Ne4j
Neo4j 在URL 处检查数据库,因此在浏览器中使用http://localhost:7474/browser/URL 进行查看。首次启动时,会提示您更改账户密码。默认帐户密码是neo4j。
5
注册Ne4j服务
以管理员身份在cmd中运行neo4j install-serivce
启动neo4j服务:neo4j start
停止neo4j服务:neo4j stop(导入新数据库时需要使用,或者选择重新启动)
重启neo4j服务:neo4j restart
数据处理
完成数据爬取和neo4j配置。 Neo4j对数据有一定的要求,数据需要经过处理后才能导入到neo4j中。
节点数据文件包括四个文件:concept.csv、executive.csv、holder.csv、industry.csv;
注意:ID必须是唯一的,所以要控制好,ID也可以是英文或中文
stock.csv 文件
执行.csv 文件
Industry.csv 文件
持有者.csv 文件
概念.csv 文件
有四个关系数据文件:executive_stock.csv、holder_stock.csv、stock_concept.csv、stock_industry.csv。 (这里几乎显示了两个文件)
注:起点和终点代表方向,请注意。
stock_cocept.csv 文件
持有者_股票.csv
注意事项:
1. 每个高管或行业或股东都应该有一个唯一的ID
2、ID与ID之间必须有对应关系,可以是一对多,也可以是多对多,但必须有对应关系,否则会报错,找不到对应关系。
3、保存后使用文件保存为utf-8编码方式,否则导入neo4j后会出现乱码。
4. 编辑csv文件后保存股票代码。如果txt文件中缺少0,可以使用Excel中的公式。
=REPT(0,6-LEN(需要补充的单元格))(需要补充的单元格),统一股票代码格式,防止导入的图不对应5。报告期只能有一个在holder.csv文件中,否则,生成的图表将具有四线关系。
导入Ne4j
1导入数据
cmd运行代码:
neo4j-admin import --mode=csv --database=stock.db --nodes import/executive.csv --nodes import/stock.csv --nodes import/concept.csv --nodes import/industry.csv --关系import/executive_stock.csv --relationships import/stock_industry.csv --relationships import/stock_concept.csv 其中--mode=csv 表示导入数据类型,--database=stock.db 表示导入数据库名称,--nodes代表导入节点,--relationships 代表导入关系。
如果直接将数据放入bin文件中,可以省略我的import/
数据库文件位于\neo4j-community-3.5.5\data\databases
2
连接到数据库
参考文章:https://blog.csdn.net/swy520/article/details/79078422
修改红色代码,去掉前面的#,修改后面的数据库文件,然后用cmd重启neo4j服务器即可连接成功。
查找相关信息
如果你的网页已经可以显示以下页面,那么你就成功了。最后,查看数据时,记得查看数据库名称。
查看所有数据(不要尝试,会卡住的)
match(n) return n 查看企业关联方
match(n{股票代码:'601369'}) 返回n
这两句话我都知道,然后还有几件事。我还需要详细学习查询代码。
002303美盈森股票详情:
修改节点属性和颜色方法:
标题:基于Neo4j和Tushare数据构建小型金融知识图谱
链接:https://www.7kxz.com/news/sypc/38039.html
版权:文章转载自网络,如有侵权,请联系删除!
用户评论
这个结合了Neo4j和Tushare数据构建的小型金融知识图谱真是太强大了!无论是对于资深的投资分析师,还是对于刚刚入门的学生来说,都是一个非常实用的工具。
有8位网友表示赞同!
使用Neo4j作为底层数据库来建立金融知识图谱,提高了查询效率并且能清晰地展现出复杂的金融关系和模式,真是令人惊叹的技术选择。
有17位网友表示赞同!
Tushare数据让这个金融图谱变得极其丰富多样性。无论是市场动态、公司财务报告还是交易策略,都能在这个平台上找到相应的数据支持。
有8位网友表示赞同!
对金融机构来说,这是一个革新性的工具。它帮助我们更好地理解市场的相互关系和投资链,为高效决策提供了宝贵信息。
有12位网友表示赞同!
个人投资者可以通过这个图谱直观地看到股票、债券以及货币市场的联系,增强了对金融市场整体趋势的理解能力。
有15位网友表示赞同!
开发者可以轻松访问并运用到Tushare的数据增强自己的学习过程或项目研究。这绝对是一个值得一试的开源工具。
有18位网友表示赞同!
对于金融爱好者而言,这是一个探索投资机会和理解市场机制不可多得的平台。借助Neo4j强大的图数据库技术,一切都变得更加清晰直观。
有12位网友表示赞同!
Tushare与Neo4j的结合使得这个知识图谱能够快速响应数据更新,确保了金融市场信息的新鲜度和准确性。
有10位网友表示赞同!
在处理大型金融数据集时,使用该图谱可以避免常见的复杂性问题。它的高效性和可扩展性使其成为现代金融业的强力工具。
有12位网友表示赞同!
得益于Tushare提供的专业金融指标数据,这个知识图谱不仅可以帮助进行数据分析,还可以预测市场趋势和投资机会。
有10位网友表示赞同!
对于那些希望利用高级分析技术优化其投资决策的人来说,这是一个革命性的工具。它的潜力无限,能够提供深入洞察。
有6位网友表示赞同!
通过建立在这个平台上独特的金融关系模型,我们能更容易地识别关键的驱动因素、风险点以及潜在的投资机遇。
有11位网友表示赞同!
Tushare数据整合到Neo4j框架中,不仅降低了使用障碍,还极大地丰富了用户的互动体验和数据分析的可能性。
有13位网友表示赞同!
作为一个初学者,我发现使用这个工具处理金融数据变得异常容易。详细的文档和社区支持使得其上手过程非常流畅。
有13位网友表示赞同!
在金融市场快速变化的背景下,这款基于Neo4j与Tushare的知识图谱提供了一个稳定可靠的数据分析平台,帮助用户始终保持信息优势。
有17位网友表示赞同!
无论是从教育目的还是专业研究角度来看,这个金融知识图谱都提供了深度学习和探索金融市场的机会,非常值得一试。
有8位网友表示赞同!
对于需要对大量财务数据进行快速洞察的现代金融分析师来说,该图谱是一个不可或缺的工具。它的性能卓越、功能齐全。
有9位网友表示赞同!
Tushare与Neo4j的完美结合让数据分析更加直观,帮助用户更好地理解复杂的金融市场动态和个人投资组合的价值变化。
有9位网友表示赞同!
对于想要深入研究金融领域的学者和专业人士而言,这是一个宝贵的资源库。它不仅提供了分析能力,还促进了深入的专业交流。
有7位网友表示赞同!