知识图谱的构建流程(金融为例)

211 阅读2分钟

知识图谱的构建流程

1 数据获取

股票基本信息(股东信息、概念信息、公告信息),财经新闻信息,概念信息,股票价格的信息。

2 数据预处理

基本信息存在空值、股东信息存在重复数据、CSV的格式更改为utf-8格式。计算股票对数收益,保留股票价格交易日为242众数&计算皮尔逊相关系数

3 数据存储

明确实体和关系 使用py2neo交互neo4j创建节点和关系

4 数据可视化查询

cypher语言的数据可视化查询

5 相关的应用

中心度算法 社区检测算法 路径搜索算法 相似性算法 链接预测

对上述步骤详细解读 tushare的数据读取,来源于tushare,下面是注册地址, waditu.com/login 获取token的地址: tushare.pro/user/token

image.png

`import tushare as ts  # 参考Tushare官网提供的安装方式
import csv
import time
import pandas as pd
# 以下pro_api token可能已过期,可自行前往申请或者使用免费版本
pro = ts.pro_api('your token')

1 股票的基本信息 stock_basic = pro.stock_basic(list_status='L', fields='ts_code, symbol, name, industry')
# 重命名行,便于后面导入neo4j
basic_rename = {'ts_code': 'TS代码', 'symbol': '股票代码', 'name': '股票名称', 'industry': '行业'}
stock_basic.rename(columns=basic_rename, inplace=True)
# 保存为stock_basic.csv
stock_basic.to_csv('financial_data\stock_basic.csv', encoding='gbk')
stock_basic.head()

{E3A9888C-0034-08FF-CFB0-70AA93F3F6A0}.jpg

2 股票的股东信息(top10)

holders = pd.DataFrame(columns=('ts_code', 'ann_date', 'end_date', 'holder_name', 'hold_amount', 'hold_ratio'))
# 获取一年内所有上市股票股东信息(可以获取一个报告期的)
for i in range(3610):
code = stock_basic['TS代码'].values[i]
holders = pro.top10_holders(ts_code=code, start_date='20180101', end_date='20181231')
holders = holders.append(holders)
if i % 600 == 0:
print(i)
time.sleep(0.4)# 数据接口限制
# 保存为stock_holders.csv
holders.to_csv('financial_data\stock_holders.csv', encoding='gbk')
holders = pro.holders(ts_code='000001.SZ', start_date='20180101', end_date='20181231')

{A06FE158-6CEB-CE70-577D-7FEB6430CDBD}.jpg

3 股票的概念信息 concept_details = pd.DataFrame(columns=('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.4)
# 保存为concept_detail.csv
concept_details.to_csv('financial_data\stock_concept.csv', encoding='gbk')

{A42E99CF-8520-A43C-6194-97330C6E03F0}.jpg

4 股票公开信息 for i in range(3610):
code = stock_basic['TS代码'].values[i]
notices = pro.anns(ts_code=code, start_date='20180101', end_date='20181231', year='2018')
notices.to_csv("financial_data\notices\"+str(code)+".csv",encoding='utf_8_sig',index=False)
notices = pro.anns(ts_code='000001.SZ', start_date='20180101', end_date='20181231', year='2018')

{D35285AF-E869-2834-2AE5-8EED00B9CA5D}.jpg

` 未完待续