Un rappel sur la façon de lire des fichiers sur le stockage d'objets à partir de code Python sur un ordinateur portable dans l'un des services principaux de Watson Data Platform Data Science Experience (DSX) C'est un record.
Le code d'écriture sert à lire les données sur le stockage d'objets Bluemix PaaS à partir d'un programme Python sur les ordinateurs portables DSX, Veillez à ne pas vous tromper car le stockage d'objets est le stockage d'objets sur le service de Bluemix PaaS, et non le stockage IBM Cloud Onject de l'infrastructure Bluemix. Ce code a été écrit avec le concept de stocker temporairement les données envoyées depuis un serveur ou un appareil IoT dans le stockage objet de Bluemix PaaS, de les lire à partir du code Python de DSX et d'exécuter un traitement de calcul scientifique.
Figure 1 Ce code Python qui fonctionne avec le bloc-notes Concept Data Science Experience
Pour l'utiliser, connectez-vous à DSX et sélectionnez Projet-> Projet par défaut (n'importe quel nom de projet) -> Ajouter des blocs-notes pour créer un bloc-notes. Ensuite, copiez et collez le code ci-dessous pour changer les informations d'identification de stockage d'objets en vos propres informations d'identification et vous êtes prêt à partir. La méthode d'acquisition des informations d'authentification sera décrite ultérieurement.
Vous pouvez récupérer un fichier à partir du stockage d'objets et le remplir dans une variable de votre code Python avec la méthode suivante: Il est pratique de stocker les données capturées dans un tableau de Num.py. Veuillez noter que le premier argument est les informations d'authentification et que l'ID utilisateur et le mot de passe sont modifiés pour chaque conteneur. Le deuxième argument est le nom de l'objet (fichier). Étant donné que le nom du conteneur est défini dans les informations d'identification, il n'est pas défini explicitement ici.
result,status,Label,Data = Read_CSV_from_ObjectStorage(credentials_1, filename)
Le premier résultat de valeur de retour renvoie True en cas de succès et False en cas d'échec. La deuxième valeur de retour, stauts, contient le code HTTP. 200 est prêt pour le succès. Si l'authentification échoue, un code d'erreur dans les 400 sera défini. La troisième valeur de retour Label renvoie une liste d'étiquettes de nom d'élément dans la ligne d'en-tête du fichier CSV. La quatrième valeur de retour Data est le contenu des données. Toutes les données sont converties en type Float et renvoyées dans le tableau.
Voici le code de lecture complet. Copiez le code suivant sur le DSX Notebook et modifiez les éléments nécessaires pour l'utiliser. Le nombre de colonnes dans le fichier au format CSV est programmé pour correspondre automatiquement.
%matplotlib inline
from io import BytesIO
import requests
import numpy as np
import matplotlib.pyplot as plt
import json
# Informations d'authentification de stockage d'objets <-Remplacer en apprenant la méthode d'acquisition des informations d'authentification décrite plus loin.
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'
}
# Lire à partir du stockage d'objets
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)
#Exit quand une erreur d'authentification se produit
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
#Set in array
tempArray = resp2.text.split ("\ n") # divisé en lignes
csvLabel = [] # Libellé sur la première ligne du CSV
csvFloat = [] #Data partie du CSV après la deuxième ligne
lineNo = 0 # nombre de lignes
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
# Exemple principal
filename = 'testDataSet.csv' <-Définissez le nom d'objet du fichier CSV que vous souhaitez lire
result,status,Label,Data = Read_CSV_from_ObjectStorage(credentials_1, filename)
if result == True:
a = np.array (Data) # numpy tableau 2D (selon le nombre de colonnes CSV)
# Dessin graphique
x = np.array (a [:, [0]]) # Extraire la première colonne
y = np.array (a [:, [1]]) # Extraire la deuxième colonne
plt.plot(x,y)
plt.show()
else:
print "ERROR ", status
Tout d'abord, enregistrez le fichier CSV dans le stockage d'objets DSX. Notez qu'il existe une correspondance un à un entre les projets DSX et les conteneurs de stockage d'objets. Par conséquent, veuillez noter que vous ne pouvez pas accéder aux conteneurs d'autres projets à partir de Notebook. Par conséquent, enregistrez le fichier CSV dans le conteneur associé au projet que vous utilisez actuellement. Spécifiez Projet-> Nom du projet dans la barre de menu pour ouvrir l'écran où les risques des blocs-notes et des actifs de données sont affichés. Ensuite, cliquez sur + Ajouter des actifs de données dans des actifs de données, et ce qui suit sera affiché à l'extrémité droite. Si vous faites glisser et déposez le fichier dans la zone de la ligne interrompue affichée comme Déposer le fichier ici, le fichier sera téléchargé. Cochez ensuite la case devant le nom du fichier. Il devrait maintenant apparaître dans les actifs de données.
Créez ensuite un bloc-notes ou ouvrez le bloc-notes en développement en mode édition. Cliquez sur l'icône de marque de stylo pour l'ouvrir en mode édition. Et Cliquer sur l'icône fera apparaître l'affichage suivant, donc cliquer sur le triangle vers le bas fera apparaître un menu supplémentaire.
Cliquez sur Insérer les informations d'identification au bas de cette liste pour insérer vos informations d'identification dans votre bloc-notes. Modifiez et prêt.
Dans ce code, les données sont lues et le graphique est affiché. Le graphique correspondant aux données du fichier CSV s'affiche.
Les informations sous-jacentes à ce code sont: Utilisation du stockage d'objets dans Data Science Experience - Python Edition]( https://datascience.ibm.com/blog/working-with-object-storage-in-data-science-experience-python-edition/)の記事のJSON読み込み用コードを元に書き換えた物です。
Recommended Posts