Выборка данных в хранилище больших двоичных объектов AzureSample data in Azure blob storage

В этой статья описывается выборка данных, содержащихся в хранилище BLOB-объектов Azure, путем их программной загрузки и последующей выборки с использованием процедур на языке Python.This article covers sampling data stored in Azure blob storage by downloading it programmatically and then sampling it using procedures written in Python.

Для чего нужна выборка данных?Why sample your data? Если размер набора данных, который планируется проанализировать, слишком большой, обычно рекомендуется уменьшить выборку данных до размера, который останется репрезентативным и будет более управляемым.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. Это способствует пониманию данных, их исследованию и проектированию характеристик.This facilitates data understanding, exploration, and feature engineering. Роль этой операции в процессе аналитики Кортаны заключается в том, чтобы сделать возможным быстрое прототипирование функций обработки данных и моделей машинного обучения.Its role in the Cortana Analytics Process is to enable fast prototyping of the data processing functions and machine learning models.

Эта задача выборки является одним из этапов процесса обработки и анализа данных группы (TDSP).This sampling task is a step in the Team Data Science Process (TDSP).

Скачать данные и уменьшить выборку данныхDownload and down-sample data

  1. Загрузить данные из хранилища BLOB-объектов Azure с помощью службы BLOB-объектов и следующего образца кода на языке Python: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. Считать данные во фрейм данных Pandas из файла, загруженного выше.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. Уменьшить выборку данных с помощью random.choice numpy: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]
    

Теперь можно работать с указанным выше фреймом данных, содержащим 1-процентную выборку, для дальнейшего просмотра и создания характеристик.Now you can work with the above data frame with the 1 Percent sample for further exploration and feature generation.

Передача данных и их считывание в службу машинного обучения AzureUpload data and read it into Azure Machine Learning

С помощью следующего образца кода можно уменьшить выборку данных и использовать их непосредственно в Машинном обучении Azure.You can use the following sample code to down-sample the data and use it directly in Azure Machine Learning:

  1. Запись фрейма данных в локальный файл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. Передача локального файла в BLOB-объект Azure с помощью следующего образца кода: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. Считывание данных из большого двоичного объекта Azure с помощью модуля Импорт данных Машинного обучения Azure, как показано на рисунке ниже.Read the data from the Azure blob using Azure Machine Learning Import Data as shown in the image below:

большой двоичный объект считывателя