Échantillonner des données dans le stockage d’objets blob AzureSample data in Azure blob storage

Cet article traite de l’échantillonnage des données conservées dans le stockage d’objets blob Azure par le biais du téléchargement de ces données par programmation, puis de leur échantillonnage à l’aide de procédures écrites dans Python.This article covers sampling data stored in Azure blob storage by downloading it programmatically and then sampling it using procedures written in Python.

Pourquoi échantillonner vos données ?Why sample your data? Si vous prévoyez d’analyser un jeu de données volumineux, il est généralement recommandé de sous-échantillonner les données afin de réduire leur taille sous une forme plus facilement exploitable, mais toujours représentative.If the dataset you plan to analyze is large, it's usually a good idea to down-sample the data to reduce it to a smaller but representative and more manageable size. Cette opération facilite la compréhension et l’exploration des données, ainsi que la conception de fonctionnalités.This facilitates data understanding, exploration, and feature engineering. Son rôle dans le processus Cortana Analytics consiste à permettre le prototypage rapide des fonctions de traitement des données et des modèles d’apprentissage automatique.Its role in the Cortana Analytics Process is to enable fast prototyping of the data processing functions and machine learning models.

Cette tâche d’échantillonnage est une étape du processus TDSP (Team Data Science Process).This sampling task is a step in the Team Data Science Process (TDSP).

Télécharger et sous-échantillonner les donnéesDownload and down-sample data

  1. Téléchargez les données du stockage d’objets blob Azure à l’aide du service BLOB en utilisant l’exemple de code suivant :Download the data from Azure blob storage using the blob service from the following sample Python code:

     from azure.storage.blob import BlobService
     import tables
    
     STORAGEACCOUNTNAME= <storage_account_name>
     STORAGEACCOUNTKEY= <storage_account_key>
     LOCALFILENAME= <local_file_name>        
     CONTAINERNAME= <container_name>
     BLOBNAME= <blob_name>
    
     #download from blob
     t1=time.time()
     blob_service=BlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY)
     blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILENAME)
     t2=time.time()
     print(("It takes %s seconds to download "+blobname) % (t2 - t1))
    
  2. Lisez les données dans une trame de données pandas à partir du fichier téléchargé à l’étape précédente.Read data into a Pandas data-frame from the file downloaded above.

     import pandas as pd
    
     #directly ready from file on disk
     dataframe_blobdata = pd.read_csv(LOCALFILE)
    
  3. Sous-échantillonnez les données en utilisant l’élément random.choice de numpy, comme suit :Down-sample the data using the numpy's random.choice as follows:

     # A 1 percent sample
     sample_ratio = 0.01 
     sample_size = np.round(dataframe_blobdata.shape[0] * sample_ratio)
     sample_rows = np.random.choice(dataframe_blobdata.index.values, sample_size)
     dataframe_blobdata_sample = dataframe_blobdata.ix[sample_rows]
    

Vous pouvez à présent travailler sur l’échantillon de 1 % de la trame de données ci-dessus à d’autres fins d’exploration et de génération de fonctionnalités.Now you can work with the above data frame with the 1 Percent sample for further exploration and feature generation.

Télécharger les données et les lire dans Azure Machine LearningUpload data and read it into Azure Machine Learning

Vous pouvez sous-échantillonner les données et les utiliser directement dans Azure Machine Learning en utilisant l’exemple de code ci-dessous :You can use the following sample code to down-sample the data and use it directly in Azure Machine Learning:

  1. Écrivez la trame de données dans un fichier local :Write the data frame to a local file

     dataframe.to_csv(os.path.join(os.getcwd(),LOCALFILENAME), sep='\t', encoding='utf-8', index=False)
    
  2. Chargez le fichier local dans un objet blob Azure au moyen de l’exemple de code suivant :Upload the local file to an Azure blob using the following sample code:

     from azure.storage.blob import BlobService
     import tables
    
     STORAGEACCOUNTNAME= <storage_account_name>
     LOCALFILENAME= <local_file_name>
     STORAGEACCOUNTKEY= <storage_account_key>
     CONTAINERNAME= <container_name>
     BLOBNAME= <blob_name>
    
     output_blob_service=BlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY)    
     localfileprocessed = os.path.join(os.getcwd(),LOCALFILENAME) #assuming file is in current working directory
    
     try:
    
     #perform upload
     output_blob_service.put_block_blob_from_path(CONTAINERNAME,BLOBNAME,localfileprocessed)
    
     except:            
         print ("Something went wrong with uploading to the blob:"+ BLOBNAME)
    
  3. Lisez les données de l’objet blob Azure à l’aide du module Importer les données Azure Machine Learning, comme l’illustre l’image ci-dessous :Read the data from the Azure blob using Azure Machine Learning Import Data as shown in the image below:

objet blob de lecteur