Lecture de données CSV à partir du code Python de stockage d'objets DSX

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.

スクリーンショット 2017-04-20 12.04.03.png Figure 1 Ce code Python qui fonctionne avec le bloc-notes Concept Data Science Experience

Comment utiliser

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

Comment obtenir les informations d'identification de stockage d'objets

Enregistrement de fichier CSV

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

Obtenez des identifiants

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

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

Résultat de l'exécution du code

Dans ce code, les données sont lues et le graphique est affiché. Le graphique correspondant aux données du fichier CSV s'affiche.

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

Informations de référence

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

Lecture de données CSV à partir du code Python de stockage d'objets DSX
Code Python pour l'écriture de données CSV dans le stockage d'objets DSX
Python: lecture de données JSON à partir de l'API Web
Exploitez le stockage d'objets cloud de Sakura à partir de Python
[Python] Lecture de fichiers CSV
[Python] Lecture du code source Django Vue à partir de zéro ①
Arrêtez Omxplayer à partir du code Python
Remarques sur l'importation de données depuis MySQL ou CSV avec Python
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Python: exclure les balises des données html
Toucher les objets Python d'Elixir
Frappez les données du trésor de Python Pandas
Obtenir des données de Quandl en Python
Utiliser Cloud Storage depuis Python3 (Introduction)
Lecture et écriture de fichiers CSV Python
Exécuter du code Python à partir de l'interface graphique C #
Utiliser Azure Blob Storage à partir de Python
Lire et écrire du CSV avec Python
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
Fichier Python CSV Conversion de code de caractère, extraction de nom de fichier, lecture, sortie, opération de fusion
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
Recevoir des données textuelles de mysql avec python
SIGNATURE Quête ① De la lecture des données au prétraitement
[Note] Obtenir des données de PostgreSQL avec Python
Entrée / sortie de données en Python (CSV, JSON)
Utiliser le type de données PostgreSQL (jsonb) à partir de Python
[Python3] Réécrire l'objet code de la fonction
[Python] Application Web à partir de 0! Pratique (4) - Mise en forme des données-
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
[Note] Exécuter du code Python à partir d'Excel (xlwings)
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
(Notes diverses) Modèle de mise à jour des données à partir de l'acquisition / traitement des données CSV par Python vers Excel
Code de caractères pour la lecture et l'écriture de fichiers csv avec python
Obtenez des données de séries chronologiques de k-db.com avec Python
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
[Kaggle] De la lecture des données au prétraitement et au codage
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
[Python] Conversion de DICOM en PNG ou CSV
Étude à partir de Python Lecture et écriture de fichiers Hour9
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment générer un objet Python à partir de JSON
Lire et écrire des fichiers CSV et JSON avec Python
Générez une instruction d'insertion à partir de CSV avec Python.
J'ai essayé de lire un fichier CSV en utilisant Python
[Python] Flux du scraping Web à l'analyse des données
L'histoire de la lecture des données HSPICE en Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Je veux créer du code C ++ à partir de code Python!
Convertir JSON en CSV avec Python de Splunk
Exemple de lecture et d'écriture de CSV avec Python
Extraire des données d'une page Web avec Python