Eine Erinnerung zum Lesen von Dateien zur Objektspeicherung aus Python-Code auf Notebooks in einem der Kerndienste von Watson Data Platform Data Science Experience (DSX) Es ist ein Rekord.
Der Schreibcode dient zum Lesen von Daten im Bluemix PaaS-Objektspeicher aus einem Python-Programm auf DSX-Notebooks. Bitte achten Sie darauf, keinen Fehler zu machen, da der Objektspeicher nicht der IBM Cloud Onject-Speicher der Bluemix-Infrastruktur ist, sondern der Objektspeicher im Dienst von Bluemix PaaS. Dieser Code wurde mit dem Konzept geschrieben, Daten, die von einem Server oder IoT-Gerät gesendet wurden, vorübergehend im Objektspeicher von Bluemix PaaS zu speichern, sie aus dem Python-Code von DSX zu lesen und die wissenschaftliche Berechnungsverarbeitung auszuführen.
Abbildung 1 Dieser Python-Code, der mit dem Concept Data Science Experience Notebook funktioniert
Um es zu verwenden, melden Sie sich bei DSX an und wählen Sie Projekt-> Standardprojekt (beliebiger Projektname) -> Notizbücher hinzufügen, um ein Notizbuch zu erstellen. Kopieren Sie dann den folgenden Code und fügen Sie ihn ein, um die Anmeldeinformationen für den Objektspeicher in Ihre eigenen Anmeldeinformationen zu ändern, und schon können Sie loslegen. Das Verfahren zum Erfassen von Authentifizierungsinformationen wird später beschrieben.
Sie können eine Datei aus dem Objektspeicher abrufen und mit der folgenden Methode in eine Variable in Ihrem Python-Code einfügen: Es ist praktisch, die erfassten Daten in einem Array von Num.py zu speichern. Bitte beachten Sie, dass das erste Argument die Authentifizierungsinformationen sind und die Benutzer-ID und das Kennwort für jeden Container geändert werden. Das zweite Argument ist der Name des Objekts (der Datei). Da der Containername in den Anmeldeinformationen festgelegt ist, wird er hier nicht explizit festgelegt.
result,status,Label,Data = Read_CSV_from_ObjectStorage(credentials_1, filename)
Das erste Rückgabewertergebnis gibt True bei Erfolg und False bei Fehler zurück. Der zweite Rückgabewert, stauts, enthält den HTTP-Code. 200 ist auf Erfolg eingestellt. Wenn die Authentifizierung fehlschlägt, wird ein Fehlercode in den 400ern festgelegt. Der dritte Rückgabewert Label gibt eine Liste der Elementnamenbezeichnungen in der Kopfzeile der CSV-Datei zurück. Der vierte Rückgabewert Daten ist der Inhalt der Daten. Alle Daten werden in den Float-Typ konvertiert und im Array zurückgegeben.
Das Folgende ist der gesamte Lesecode. Kopieren Sie den folgenden Code in das DSX-Notebook und ändern Sie die erforderlichen Teile, um ihn zu verwenden. Die Anzahl der Spalten in der CSV-Formatdatei ist so programmiert, dass sie automatisch übereinstimmt.
%matplotlib inline
from io import BytesIO
import requests
import numpy as np
import matplotlib.pyplot as plt
import json
# Objektspeicher-Authentifizierungsinformationen <- Ersetzen Sie diese durch Erlernen der später beschriebenen Methode zur Erfassung von Authentifizierungsinformationen.
credentials_1 = {
'auth_url':'https://identity.open.softlayer.com',
'project':'object_storage_bc6cdc85_586e_4581_8a09_8f01f7bdf3ed',
'project_id':'2a9de4c1d50944a49f1a46dd53394158',
'region':'dallas',
'user_id':'********************************',
'domain_id':'fb119f3e1bc0469dad2b253b317ec7ea',
'domain_name':'952993',
'username':'***********************************************',
'password':"********************",
'container':'DefaultProjecttakarajpibmcom',
'tenantId':'undefined',
'filename':'testdata_for_dsx.csv'
}
# Aus dem Objektspeicher lesen
def Read_CSV_from_ObjectStorage(credentials, fileName):
"""This functions returns a StringIO object containing
the file content from Bluemix Object Storage V3."""
url1 = ''.join(['https://identity.open.softlayer.com', '/v3/auth/tokens'])
data = {'auth': {'identity': {'methods': ['password'],
'password': {'user': {'name': credentials['username'],'domain': {'id': credentials['domain_id']},
'password': credentials['password']}}}}}
headers1 = {'Content-Type': 'application/json'}
resp1 = requests.post(url=url1, data=json.dumps(data), headers=headers1)
# Beenden, wenn ein Authentifizierungsfehler auftritt
if resp1.status_code != 201:
return False, resp1.status_code, None, None
resp1_body = resp1.json()
for e1 in resp1_body['token']['catalog']:
if(e1['type']=='object-store'):
for e2 in e1['endpoints']:
if(e2['interface']=='public'and e2['region']=='dallas'):
#url2 = ''.join([e2['url'],'/', credentials['container'], '/', credentials['filename']])
url2 = ''.join([e2['url'],'/', credentials['container'], '/', fileName])
s_subject_token = resp1.headers['x-subject-token']
headers2 = {'X-Auth-Token': s_subject_token, 'accept': 'text/csv'}
resp2 = requests.get(url=url2, headers=headers2)
if resp2.status_code != 200:
return False, resp2.status_code, None, None
# In Array setzen
tempArray = resp2.text.split ("\ n") # in Zeilen aufteilen
csvLabel = [] # Label in der ersten Zeile der CSV
csvFloat = [] #Datenteil von CSV nach der zweiten Zeile
lineNo = 0 # Zeilenanzahl
for row in tempArray:
if len(row) > 0:
c = row.split(",")
if lineNo == 0:
csvLabel = c
else:
a = []
for i in range(0,len(c)):
a.append(float(c[i]))
csvFloat.append(a)
lineNo = lineNo + 1
return True, resp2.status_code,csvLabel,csvFloat
# Beispiel main
Dateiname = 'testDataSet.csv' <- Legen Sie den Objektnamen der CSV-Datei fest, die Sie lesen möchten
result,status,Label,Data = Read_CSV_from_ObjectStorage(credentials_1, filename)
if result == True:
a = np.array (Daten) # numpy 2D-Array (abhängig von der Anzahl der CSV-Spalten)
# Diagrammzeichnung
x = np.array (a [:, [0]]) # Extrahieren Sie die erste Spalte
y = np.array (a [:, [1]]) # Extrahieren Sie die zweite Spalte
plt.plot(x,y)
plt.show()
else:
print "ERROR ", status
Registrieren Sie zunächst die CSV-Datei im DSX-Objektspeicher. Beachten Sie, dass zwischen DSX-Projekten und Objektspeichercontainern eine Eins-zu-Eins-Korrespondenz besteht. Beachten Sie daher, dass Sie von Notebook aus nicht auf die Container anderer Projekte zugreifen können. Registrieren Sie daher die CSV-Datei in dem Container, der dem aktuell verwendeten Projekt zugeordnet ist. Geben Sie in der Menüleiste Projekt-> Projektname an, um den Bildschirm zu öffnen, auf dem die Risiken von Notizbüchern und Datenbeständen angezeigt werden. Klicken Sie dann auf + Daten-Assets in Daten-Assets hinzufügen. Das Folgende wird am rechten Ende angezeigt. Wenn Sie die Datei in den Bereich der unterbrochenen Linie ziehen und dort ablegen, der hier als Datei ablegen angezeigt wird, wird die Datei hochgeladen. Aktivieren Sie dann das Kontrollkästchen vor dem Dateinamen. Es sollte jetzt in Data Assets angezeigt werden.
Erstellen Sie dann ein Notizbuch oder öffnen Sie das sich entwickelnde Notizbuch im Bearbeitungsmodus. Klicken Sie auf das Stiftmarkierungssymbol, um es im Bearbeitungsmodus zu öffnen. Und Wenn Sie auf das Symbol klicken, wird die folgende Anzeige angezeigt. Wenn Sie also auf das nach unten gerichtete Dreieck klicken, wird ein weiteres Menü angezeigt.
Klicken Sie unten in dieser Liste auf Anmeldeinformationen einfügen, um Ihre Anmeldeinformationen in Ihr Notizbuch einzufügen. Bearbeiten und fertig.
In diesem Code werden die Daten gelesen und das Diagramm angezeigt. Das Diagramm, das den Daten in der CSV-Datei entspricht, wird angezeigt.
Die diesem Code zugrunde liegenden Informationen sind Arbeiten mit Objektspeicherung in Data Science Experience - Python Edition]( https://datascience.ibm.com/blog/working-with-object-storage-in-data-science-experience-python-edition/)の記事のJSON読み込み用コードを元に書き換えた物です。
Recommended Posts