La mejor forma de convertir del formato csv de blob azul a un dataframe de pandas mientras se ejecuta un cuaderno en azul ml

Tengo una gran cantidad de datos csv grandes (delimitados por tabuladores) almacenados como blobs azules, y quiero crear un dataframe de pandas a partir de estos. Puedo hacer esto localmente de la siguiente manera:

from azure.storage.blob import BlobService import pandas as pd import os.path STORAGEACCOUNTNAME= 'account_name' STORAGEACCOUNTKEY= "key" LOCALFILENAME= 'path/to.csv' CONTAINERNAME= 'container_name' BLOBNAME= 'bloby_data/000000_0' blob_service = BlobService(account_name=STORAGEACCOUNTNAME, account_key=STORAGEACCOUNTKEY) # Only get a local copy if haven't already got it if not os.path.isfile(LOCALFILENAME): blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILENAME) df_customer = pd.read_csv(LOCALFILENAME, sep='\t') 

Sin embargo, cuando ejecuto el notebook en blocs azules de ML, no puedo ‘guardar una copia local’ y luego leer desde csv, así que me gustaría hacer la conversión directamente (algo como pd.read_azure_blob (blob_csv) o simplemente pd .read_csv (blob_csv) sería ideal).

Puedo obtener el resultado final deseado (dataframe de pandas para datos csv de blob), si primero creo un espacio de trabajo de ML azul, y luego leo los conjuntos de datos en eso, y finalmente uso https://github.com/Azure/Azure-MachineLearning -ClientLibrary-Python para acceder al conjunto de datos como un dataframe de pandas, pero prefiero leer directamente desde la ubicación de almacenamiento de blob.

Creo que quieres usar get_blob_to_bytes , or get_blob_to_text ; estos deben generar una cadena que puede utilizar para crear un dataframe como

 from io import StringIO blobstring = blob_service.get_blob_to_text(CONTAINERNAME,BLOBNAME) df = pd.read_csv(StringIO(blobstring)) 

Gracias por la respuesta, creo que se necesita alguna corrección. Debe obtener contenido del objeto blob y, en el objeto get_blob_to_text, no es necesario el nombre del archivo local.

 from io import StringIO blobstring = blob_service.get_blob_to_text(CONTAINERNAME,BLOBNAME).content df = pd.read_csv(StringIO(blobstring))