本文介绍对 Azure Blob 存储中的数据进行采样的方法:以编程方式下载数据,并使用以 Python 编写的程序对其进行采样。

为什么对数据进行采样? 如果计划要分析的数据集很大,通常最好是对数据进行向下采样,以将数据减至较小但具备代表性且更易于管理的规模。 采样有利于数据理解、探索和特征工程。 它在 Cortana Analytics 进程中的作用是能够快速建立数据处理函数和机器学习模型的快速原型。

此采样任务是 团队数据科学流程 (TDSP) 中的一个步骤。

下载和向下采样数据

  • 从下列 Python 代码示例中,通过 Blob 服务,从 Azure Blob 存储下载数据:

    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))
    
  • 从以上下载的文件中将数据读入 Pandas 数据帧。

    import pandas as pd
    #directly ready from file on disk
    dataframe_blobdata = pd.read_csv(LOCALFILE)
    
  • 使用 numpyrandom.choice 向下采样数据,如下所示:

    # 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% 样本的数据帧,执行进一步的研究和特征生成。

    上传数据并读入 Azure 机器学习

    可以使用以下示例代码向下采样数据,并直接在 Azure 机器学习中使用:

  • 将数据帧写入本地文件

    dataframe.to_csv(os.path.join(os.getcwd(),LOCALFILENAME), sep='\t', encoding='utf-8', index=False)
    
  • 使用以下示例代码将本地文件上传到 Azure blob:

    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
    #perform upload
    output_blob_service.put_block_blob_from_path(CONTAINERNAME,BLOBNAME,localfileprocessed)
    except:            
        print ("Something went wrong with uploading to the blob:"+ BLOBNAME)
    
  • 在 Azure 机器学习中创建一个指向 Azure Blob 存储的数据存储。 此链接描述了数据存储的概念以及随后如何制作用于 Azure 机器学习的数据集

    本文由 Microsoft 维护, 最初由以下贡献者撰写。

    首席作者:

  • Mark Tabladillo | 高级云解决方案架构师
  • 若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

  •