Azure BLOB ストレージのデータをサンプリングするSample data in Azure blob storage

この記事では、Azure Blob Storage に格納されたデータのサンプリングについて説明します。プログラムからデータをダウンロードし、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. Cortana Analytics Process におけるダウンサンプリングの役割は、データ処理機能と機械学習モデルのプロトタイプをより迅速に作成できるようにすることです。Its role in the Cortana Analytics Process is to enable fast prototyping of the data processing functions and machine learning models.

このサンプリング タスクは、 Team Data Science Process (TDSP)の 1 ステップです。This sampling task is a step in the Team Data Science Process (TDSP).

データのダウンロードとダウン サンプリングDownload and down-sample data

  1. 次の Python のサンプル コードから、BLOB サービスを使用して Azure BLOB ストレージからデータをダウンロードします。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. 次のように、numpyrandom.choice を使用してデータをダウンサンプリングします。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.

データをアップロードし、Azure Machine Learning で読み取るUpload data and read it into Azure Machine Learning

次のサンプル コードを使用すると、次のようにデータをダウンサンプリングして、 Azure Machine Learning で直接使用できます。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. 次のサンプル コードを使用してローカル ファイルを Azure BLOB にアップロードする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 Machine Learning のデータのインポートを使用して Azure BLOB からデータを読み取ります。Read the data from the Azure blob using Azure Machine Learning Import Data as shown in the image below:

リーダー BLOB