Einführung in die Graph Database Neo4j in Python für Anfänger (für Mac OS X)

Ich bin selbst Anfänger und muss leider "Einführung in die Graphendatenbank Neo4j für Anfänger in Python" sagen. Einführung einer Umgebungskonstruktion für den Betrieb von Neo4j mit Python und eines Beispiels für das Spielen mit Daten.

1. Einführung von Neo4j

Beginnen wir mit der Bereitstellung von Neo4J unter Mac OS X. Da meine Umgebung Yosemite 10.10.2 ist, wäre ich Ihnen dankbar, wenn Sie mich in den Kommentaren darüber informieren könnten, ob aufgrund von Unterschieden in der Umgebung Fehler vorliegen.

Zunächst benötigen Sie ein JDK, aber es scheint, dass es mit Java, das von Anfang an auf dem Mac enthalten ist, nicht gut funktioniert. Oracle JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260. Aus HTML einführen.

Nächster, http://neo4j.com/download/ Besuchen Sie, um die Neo4j Community Edition (kostenlose Version) herunterzuladen.

neo4j-community-2.2.0-unix-2.tar wird heruntergeladen. Entpacken Sie es und legen Sie es in den Ordner.

tar zvf neo4j-community-2.2.0-unix-2.tar
cd neo4j-community-2.2.0

Dann starten Sie es.

./bin/neo4j start

Es ist sehr einfach zu installieren! Es gibt eine Benutzeroberfläche, auf die über einen Browser zugegriffen werden kann. Versuchen wir es also. Das Zugangsziel ist http://localhost:7474/browser/ ist. Sie werden beim ersten Start aufgefordert, die ID und das Kennwort festzulegen. Stellen Sie sie daher entsprechend ein.

2. Stellen Sie mit Python # eine Verbindung zu Neo4j her

Es scheint einige Python-Bibliotheken zu geben, die eine Verbindung zu Neo4j herstellen können, aber hier habe ich beschlossen, Neo4j RestClient zu verwenden, um eine Verbindung von Python zu Neo4j herzustellen. Ich werde.

pip install neo4jrestclient

pip ist großartig, es ist wirklich einfach zu installieren! : zufrieden:

Folgen Sie dem neo4jRestClient Tutorial, um es auszuprobieren.

from neo4jrestclient.client import GraphDatabase

url = "http://<Benutzer-ID>:<Passwort>@localhost:7474/db/data/"
gdb = GraphDatabase(url)

Schreiben Sie in die Felder und die zuvor festgelegte. Dadurch werden Sie von Python aus mit Neo4j verbunden.

Fügen Sie als Nächstes zwei Knoten hinzu. Sie sind Alice und Bob im gleichen Alter.

alice = gdb.nodes.create(name="Alice", age=30)
bob = gdb.nodes.create(name="Bob", age=30)

Eigentlich wusste Bob von 1980 über Alice Bescheid, aber Alice kannte Bob drei Jahre später ... Wenn Sie den Knoten hinzufügen, sieht dieser wie folgt aus.

bob.relationships.create("Knows", alice, since=1980)
alice.relationships.create("Knows", bob, since=1983)

Lassen Sie uns dies anzeigen. (Gehen Sie davon aus, dass Python auf dem iPython-Notebook ausgeführt wird.)

Klicken Sie auf die Abfrage, um alle anzuzeigen, einschließlich der Knoten-zu-Knoten-Beziehungen. Außerdem ist das Setzen von data_contents = True der Schlüssel, und ohne dies funktioniert es nicht gut. (Ich habe ein wenig Zeit gebraucht, ohne das zu wissen ...)

gdb.query("MATCH (n)-[r]-(m) RETURN n, r, m", data_contents=True)

neo4j_001-compressor.png Die Grafik wird angezeigt!

Um dies in Ihrem Browser anzuzeigen, gehen Sie zu http: // localhost: 7474 / browser /

MATCH (n)-[r]-(m) RETURN n, r, m

neo4j_002-compressor.png

Und drücken Sie die Eingabetaste neo4j_003.png Die Grafik wird angezeigt: grinsend:

2. Spielen Sie mit den Daten

Löschen Sie die Daten bis zu diesem Zeitpunkt einmal.

# All Delete
gdb.query("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r", data_contents=True)

Fügen Sie dann drei Knoten und Beziehungen hinzu.

#Personenknoten hinzufügen
alice = gdb.nodes.create(name="Alice", age=30)
bob   = gdb.nodes.create(name="Bob", age=30)
ken   = gdb.nodes.create(name="Ken", age=35)

alice.labels.add("Person")
bob.labels.add("Person")
ken.labels.add("Person")

#Beziehungseinstellungen
bob.relationships.create("Knows", alice, since=1980)
alice.relationships.create("Knows", bob, since=1983)
alice.relationships.create("Knows", ken, since=2015)

Knoten bezieht sich hier auf jede Person, und Beziehung bezieht sich auf die Beziehung, die Alice Bob kennt.

neo4j_004-compressor-2.png

Wenn Sie die Anzeigeabfrage auf iPython drücken,

gdb.query("MATCH (n)-[r]-(m) RETURN n, r, m", data_contents=True)

neo4j_005-compressor.png

Ein ähnliches Diagramm wird angezeigt: D.

Schauen wir uns das Diagramm an, indem wir die Person definieren, die als Nächstes ein Blog schreibt, und die Beziehung zu diesem Blog als Blogbesitzer: "Eigentümer" und Abonnent: "Abonnieren".

#Blog-Knoten hinzufügen
cam_blog  = gdb.nodes.create(name="Camera Blog")
comp_blog = gdb.nodes.create(name="Computer Blog")
trav_blog = gdb.nodes.create(name="Travel Blog")
gour_blog = gdb.nodes.create(name="Gourmet Blog")

cam_blog.labels.add("Blog")
comp_blog.labels.add("Blog")
trav_blog.labels.add("Blog")
gour_blog.labels.add("Blog")

#Beziehung hinzufügen
alice.relationships.create("Own", cam_blog)
bob.relationships.create("Own", comp_blog)
ken.relationships.create("Own", trav_blog)

alice.relationships.create("Subscribe", trav_blog)
alice.relationships.create("Subscribe", gour_blog)
bob.relationships.create("Subscribe", cam_blog)
ken.relationships.create("Subscribe", comp_blog)

Wenn Sie mit einem Browser auf http: // localhost: 7474 / browser / zugreifen und die folgende Abfrage auslösen:

MATCH (n)-[r]-(m) RETURN n, r, m

Ein solches Diagramm wird angezeigt. Ich denke, es ist ziemlich leicht zu verstehen. Aus diesem Grund wird gesagt, dass Graphendatenbanken Beziehungen leichter verstehen als relationale Datenbanken. neo4j_006.png

3. Cypher Erster Schritt

Lassen Sie mich einige Beispiele für das grundlegende Schreiben von Cypher geben.
Die folgenden durch rote Kreise gekennzeichneten Bob, Alice, Ken werden ausgewählt.

match (n:Person) RETURN n

neo4j_007-compressor.png (* Der rote Rahmen wurde der Übersichtlichkeit halber hinzugefügt und erscheint nicht auf dem Neo4J-Browserbildschirm.)

Diesmal ist der Blog-Knoten ausgewählt.

match (n:Blog) RETURN n

neo4j_008-compressor.png

Diese Cypher-Abfrage extrahiert nur Bob.

MATCH (b:Person {name:'Bob'}) RETURN b

neo4j_009-compressor.png

Wählen Sie auch die Beziehung aus. In den folgenden Fällen gelten nur diejenigen, die sich auf Own beziehen.

MATCH (p:Person)-[r:Own]->(b:Blog) RETURN p,r,b;

neo4j_011-compressor.png

Generieren Sie schließlich zufällig 100 Personenknoten und 100 Blogknoten und generieren Sie anschließend ein Diagramm mit 500 Abonnementbeziehungen und zeigen Sie es an.

import numpy.random as rd

l = 100

person_list = []
blog_list = []
for i in range(l):
    
    p = gdb.nodes.create(name="person_%d"%i)
    p.labels.add("Person")
    
    b  = gdb.nodes.create(name="Blog_%d"%i)
    b.labels.add("Blog")
    
    person_list.append(p)
    blog_list.append(b)

r1 = range(len(person_list))
rd.shuffle(r1)

for i in range(len(blog_list)):
    blog_list[i].relationships.create("Own", person_list[r1[i]])


r2 = range(l) * 5
rd.shuffle(r2)
r3 = range(l) * 5
rd.shuffle(r3)
                
for i,j in zip(r2, r3):
    person_list[i].relationships.create("Subscribe", blog_list[j])

neo4j_012-compressor.png

Es ist Chaos! : grinsen:

3. Zeichnen Sie mit Networkx

Installieren Sie iCypher.

pip install ipython-cypher

Sie können es mit networkx mit dem folgenden Code grafisch darstellen.

neo4j-networkx.py


%load_ext cypher
%matplotlib inline
import networkx as nx
import matplotlib.pyplot as plt

result = %%cypher http://<Benutzer-ID>:<Passwort>@localhost:7474/db/data/ MATCH (n)-[r]-(m) RETURN n,r,m;
node_map ={'Person':'#22FF99', 'Blog': '#6622FF' }
node_label={'Person':'Person', 'Blog': 'Blog' }

g = result.get_graph()
pos=nx.get_node_attributes(g,'pos')
plt.figure(figsize=(15,15))
nx.draw(g, node_color=[node_map[g.node[n]['labels'][0]] for n in g],node_size=80, width=0.5, edge_color='#999999')

neo4j_014-compressor.png

Recommended Posts

Einführung in die Graph Database Neo4j in Python für Anfänger (für Mac OS X)
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
Einführung in die Programmierung (Python) TA Tendenz für Anfänger
[Einführung für Anfänger] Umgang mit MySQL mit Python
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in IPython (Python2) in Mac OS X-Vorbereitung für den Einstieg in die Theorie des maschinellen Lernens
Python-Umgebungskonstruktion für Programmieranfänger (Mac OS)
Einführung in Python For, While
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
[Erklärung für Anfänger] Einführung in die Pooling-Verarbeitung (erklärt in TensorFlow)
Erste Schritte mit Python für Nicht-Ingenieure
Einführung in Python Django (2) Mac Edition
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Schritte, um Caffe im CPU-Modus in Mac OS X 10.10 zu integrieren
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So löschen Sie Python 2.x auf einem Mac.
Anfänger lesen "Einführung in TensorFlow 2.0 für Experten"
Eine Einführung in Python für maschinelles Lernen
Einführung in Vektoren: Lineare Algebra in Python <1>
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Eine Einführung in Python für C-Sprachprogrammierer
Erstellen Sie in 10 Minuten eine Python-Entwicklungsumgebung (Mac OS X + Visual Studio-Code).
Einführung in Deep Learning (1) --Chainer wird Anfängern leicht verständlich erklärt.
Memo Nr. 4, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Der schnellste Weg für Anfänger, um Python zu beherrschen
Eine Einführung in die objektorientierte Programmierung für Anfänger von Anfängern
Python für Super-Anfänger Super-Anfänger Python # Einfach loszuwerden
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
tse - Einführung in den Text Stream Editor in Python
Von der Datei zur Diagrammzeichnung in Python. Grundstufe Grundstufe
Geschrieben "Einführung in die Effektüberprüfung" in Python
Memo Nr. 1, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
[Einführung in die Udemy Python3 + -Anwendung] 43. for else-Anweisung
Python-Anfänger haben es in 3 Tagen von der Installation des Betriebssystems bis zur Ausführung der Twitter-API versucht
Memo Nr. 7, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Memo Nr. 6 für Python-Anfänger zum Lesen von "Detaillierte Erklärung der Python-Grammatik"
Shpinx (Python Document Builder) unter Mac OS X.
Wie man Python für Anfänger schneller macht [numpy]
Memo Nr. 5, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Führen Sie den Qiita API v2 Python-Wrapper in einer Python 3-Umgebung aus (Mac OS X 10.11 (El Capitan)).
Grundlegende Geschichte der Vererbung in Python (für Anfänger)
Grundlegendes zur Python for Pepper-Entwicklung. -Einführung in Python Box-
[Für Anfänger von Wettkampfprofis] Ich habe versucht, 40 AOJ "ITP I" -Fragen mit Python zu lösen
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
Janken Poi in Python für Anfänger (Antworten und Erklärungen)
Ein Tool zum Erstellen von Maskenbildern für ETC in Python
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So konvertieren Sie den Python # -Typ für Super-Anfänger von Python: str
Vorbereiten der Verwendung von aws cli unter Mac OS X.
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
So führen Sie Python im virtuellen Raum aus (für MacOS)
Erstellen einer Umgebung für "Tello_Video" unter Mac OS X.
Sehr einfach, SciPy unter Mac OS X zu installieren
[Einführung in Python] Hochgeschwindigkeits-Einführung in Python für vielbeschäftigte C ++ - Programmierer
mac OS X 10.15.x pyenv Python Wenn Sie nicht installieren können
Beenden bei Verwendung von Python in Terminal (Mac)