@TOC[1] Here's the table of contents:
•一、DataFrame•二、指定字段转换为DataFrame •2.1 CYPHER语句 •2.2 Python转换代码•三、将一个图转换为DataFrame •3.1 CYPHER语句 •3.2 Python转换代码
图数据转换为DataFrame
数据分析师都喜欢使用
python
进行数据分析,因为python的主要优点在于科学计算并且有很多成熟的工具包可以使用。在分析图数据时,分析师都需要进行一系列的数据转换操作,例如需要将图数据转换为DataFrame
。在本文中,使用python调用图数据库的HTTP接口,将返回值转换为DataFrame。
一、DataFrame
DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。 DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。下面介绍了使用Python调用HTTP接口的方法。
•使用Python调用HTTP接口方法-无用户密码验证
代码语言:javascript复制#coding:utf8
import requests
import json
# 调用无用户名密码验证的HTTP接口
def test1():
company = "腾讯"
data = {"query": "{n horgByName(name: "%s") {n namen hcoden }n}n" % company, "variables": None}
res = requests.post(url="http://localhost:9200/ongdb/graphql", data=data)
result = json.loads(res.content)
print(result)
if __name__ == '__main__':
test1()
•使用Python调用HTTP接口方法-需要用户密码验证
代码语言:javascript复制import requests
import json
# 调用需要用户名密码验证的HTTP接口
def test2():
cypher = "MATCH p=(n)--() RETURN p LIMIT 10"
data = {"statements":[{"statement": f"{cypher}" ,"resultDataContents": ["graph"]}]}
res = requests.post(url="http://localhost/db/data/transaction/commit", json=data, headers={'Content-Type': "application/json"}, auth=('user','pass'))
# import pdb; pdb.set_trace()
# print(res.text)
result = json.loads(res.content)
print(result)
if __name__ == '__main__':
test2()
二、指定字段转换为DataFrame
2.1 CYPHER语句
代码语言:javascript复制 MATCH (n)-[r]->(m) RETURN n.name,TYPE(r) AS type,m.name LIMIT 10
2.2 Python转换代码
代码语言:javascript复制import requests
import json
import pandas as pd
# 返回的table转为DataFrame
cypher = "MATCH (n)-[r]->(m) RETURN n.name,TYPE(r) AS type,m.name LIMIT 10"
data = {"statements":[{"statement": f"{cypher}" ,"resultDataContents": ["rest"]}]}
res = requests.post(url="http://localhost/db/data/transaction/commit", json=data, headers={'Content-Type': "application/json"}, auth=('ongdb','datalab%pro'))
result = json.loads(res.content)
pd.DataFrame(data = [u['rest'] for u in result['results'][0]['data']], columns = result['results'][0]['columns'])
三、将一个图转换为DataFrame
在下面的案例中,是基于时间序列建模的担保网络,其中
guarantee_detail
字段是存储在关系属性中的JSON字符串,olab.result.transfer
函数支持将图数据转换为标准的table
格式。
3.1 CYPHER语句
代码语言:javascript复制MATCH (:HORGGuaranteeV003)-[r]->(:HORGGuaranteeV003) WITH r LIMIT 10
WITH olab.result.transfer(r,null,'guarantee_detail',null) AS mapList
UNWIND mapList AS map
RETURN map.r_type AS r_type
•数据模型
•执行结果
3.2 Python转换代码
代码语言:javascript复制import requests
import json
import pandas as pd
# 返回的table转为DataFrame
cypher = "MATCH (:HORGGuaranteeV003)-[r]->(:HORGGuaranteeV003) WITH r LIMIT 10 WITH olab.result.transfer(r,null,'guarantee_detail',null) AS mapList UNWIND mapList AS map RETURN map.r_type AS r_type"
data = {"statements":[{"statement": f"{cypher}" ,"resultDataContents": ["rest"]}]}
res = requests.post(url="http://10.20.13.200/db/data/transaction/commit", json=data, headers={'Content-Type': "application/json"}, auth=('ongdb','datalab%pro'))
result = json.loads(res.content)
pd.DataFrame(data = [u['rest'] for u in result['results'][0]['data']], columns = result['results'][0]['columns'])
References
[1]
TOC: 图数据转换为DataFrame