Lesen von CSV-Daten aus dem Python-Code des DSX-Objektspeichers

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.

スクリーンショット 2017-04-20 12.04.03.png Abbildung 1 Dieser Python-Code, der mit dem Concept Data Science Experience Notebook funktioniert

Wie benutzt man

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

So erhalten Sie Anmeldeinformationen für die Objektspeicherung

Registrierung von CSV-Dateien

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. スクリーンショット 2017-04-20 13.08.13.png

Anmeldeinformationen abrufen

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. UndScreenshot 2017-04-20 13.13.27.png 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. スクリーンショット 2017-04-20 13.14.01.png

Klicken Sie unten in dieser Liste auf Anmeldeinformationen einfügen, um Ihre Anmeldeinformationen in Ihr Notizbuch einzufügen. Bearbeiten und fertig. スクリーンショット 2017-04-20 13.14.11.png

Ergebnis der Codeausführung

In diesem Code werden die Daten gelesen und das Diagramm angezeigt. Das Diagramm, das den Daten in der CSV-Datei entspricht, wird angezeigt.

スクリーンショット 2017-04-20 13.19.48.png

Referenzinformationen

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

Lesen von CSV-Daten aus dem Python-Code des DSX-Objektspeichers
Python-Code zum Schreiben von CSV-Daten in den DSX-Objektspeicher
Python: Lesen von JSON-Daten von der Web-API
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
[Python] CSV-Dateien lesen
[Python] Lesen des Django-Quellcodes Ansicht ab Null ①
Stoppen Sie Omxplayer vom Python-Code
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Python: Tags von HTML-Daten ausschließen
Berühren Sie Python-Objekte in Elixir
Hit Schatzdaten von Python Pandas
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Lesen und Schreiben von Python CSV-Dateien
Führen Sie Python-Code über die C # -GUI aus
Verwenden Sie Azure Blob Storage aus Python
Lesen und Schreiben von CSV mit Python
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
Python CSV-Datei Zeichencodekonvertierung, Extraktion von Dateinamen, Lesen, Ausgeben, Zusammenführen
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
Empfangen Sie Textdaten von MySQL mit Python
SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Dateneingabe / -ausgabe in Python (CSV, JSON)
Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
[Python] Webanwendung von 0! Hands-on (4) -Datenformung-
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
[Hinweis] Führen Sie Python-Code aus Excel aus (xlwings)
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
(Sonstige Hinweise) Datenaktualisierungsmuster von der CSV-Datenerfassung / -verarbeitung durch Python nach Excel
Zeichencode zum Lesen und Schreiben von CSV-Dateien mit Python ~ Windows-Umgebung ver ~
Holen Sie sich mit Python Zeitreihendaten von k-db.com
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
[Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
[Python] Konvertieren von DICOM in PNG oder CSV
Studie aus Python Lesen und Schreiben von Hour9-Dateien
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So generieren Sie ein Python-Objekt aus JSON
Lesen und Schreiben von CSV- und JSON-Dateien mit Python
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Ich habe versucht, eine CSV-Datei mit Python zu lesen
[Python] Fluss vom Web-Scraping zur Datenanalyse
Die Geschichte des Lesens von HSPICE-Daten in Python
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Ich möchte C ++ - Code aus Python-Code erstellen!
Konvertieren Sie JSON mit Python von Splunk in CSV
Beispiel für das Lesen und Schreiben von CSV mit Python
Extrahieren Sie mit Python Daten von einer Webseite