从pandas数据处理到知识图谱构建笔记

从pandas数据处理到知识图谱构建笔记

一、数据处理

1.读取文件夹下所有姓名xls文件并整合:

import pandas as pd
import numpy as np
import re
dfs=[]
for root,sub,files in os.walk(r'C:\Users\Administrator\excel\1'):
    for file in files:
        if file.endswith("xls"):
            for i in range(2):
                #print(file)
                flie_name=os.path.join(root,file)
                df=pd.read_excel(flie_name,index=None,header=None,sheetname=i)
                df=df.drop(labels=0)
                #print(df)
                dfs.append(df)
    #print(dfs)
df_concat=pd.concat(dfs,ignore_index=True)

2.剔除第2列中两个字的人名中的空格

df1=df_concat.iloc[:,1]
stas=re.compile(' ')
df1=df1.astype(str).apply(lambda x:stas.sub('',x))
df1.drop_duplicates(inplace=True)
df1=df1.reset_index(drop=True)

3.将本表中与另一个表中相同的姓名剔除

dete=pd.read_excel("剔除.xlsx",header=None)
index56=[]
for named in dete.iloc[:,0]:
    for a in df1.index:
        if df1.iloc[a,0]==named:
            print(named)
            print(a)
            index56.append(a)
dvqc5=df1.drop(index56)            
dvqc5=dvqc5.reset_index(drop=True)

4.在专利表中查询出与本表中名字为发明人的专利信息

dv2334=pd.read_excel("C:/Users/Administrator/excel/专利.xlsx")
ds=[]
for name in dvqc5.iloc[:,0]:
    print(name)
    for index in dv2334.index:
        if dv2334.iloc[index,20:32]==name:
            ds.append(dv2334.iloc[index,:])
dsa=pd.DataFrame(ds)
dsa=dsa.reset_index()
dsa

5.根据本名单中名字所占专利发明人的数量排序

dsa_app=dsa.groupby('申请号').size().sort_values(ascending=False)
dsa_app=pd.DataFrame(dsa_app)
dsa_app=dsa_app.reset_index()
dsa2.to_excel("专利统计.xlsx",index=None)

二、知识图谱构建

neo4j安装教程参考:链接
将整理出的专利表中的专利分类号分为大类、中类、小类号。将大类、中类、小类以及专利名分别存为csv文件,共4个文件,放入neo4j安装下的import文件夹,准备导入neo4j成为节点。
这里只贴了大类节点构建,其他类似(以下代码在neo4j中运行):

LOAD CSV WITH HEADERS  FROM "file:///大类.csv" AS line
MERGE (z:大类{name:line.大类})

构建中类与大类、小类与中类、专利名与小类的关系表(三列表:节点-关系-节点),存为csv,放到import文件夹。
构建关系(以下代码在neo4j中运行):

LOAD CSV WITH HEADERS FROM "file:///关系.csv" AS line  
match (from:中类{name:line.中类}),(to:大类{name:line.大类})  
merge (from)-[r:所属大类{property:line.关系}]->(to)

将所有节点和关系构建后,通过以下展示整个知识图谱(以下代码在neo4j中运行):

MATCH (n) RETURN n LIMIT 10000

如果节点较多,可以先更改neo4j的显示数量限制,再执行上述展示代码,如下:
在这里插入图片描述
如果想将图导出为pdf格式,可以先导出svg文件,点击这里:
在这里插入图片描述
通过以下网站将svg转化为pdf即可。(svg文件可以通过浏览器打开)
这是链接

搞定!因数据涉秘,本文不能公开。本文仅为自己的笔记记录,用于分享方法,若能帮到你是我的荣幸,欢迎互相交流。(请忽略我这菜鸡青涩的代码和命名方式)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值