Как сохранить данные Dataframe в Firebase Storage? - PullRequest
0 голосов
/ 21 декабря 2018

Учитывая панду Dataframe, которая содержит некоторые данные, что лучше всего хранить эти данные в Firebase?

Должен ли я преобразовать Dataframe в локальный файл (например, .csv, .txt) и затем загрузить егов Firebase Storage, или же можно напрямую хранить панду Dataframe без преобразования?Или есть лучшие передовые практики?

Обновление 01/03 - До сих пор я пришел с этим решением, которое требует локальной записи файла CSV, затем его чтения и загрузки изатем удаление локального файла.Однако я сомневаюсь, что это самый эффективный метод, поэтому я хотел бы знать, можно ли сделать это лучше и быстрее?

import os
import firebase_admin
from firebase_admin import db, storage

cred   = firebase_admin.credentials.Certificate(cert_json)
app    = firebase_admin.initialize_app(cred, config)
bucket = storage.bucket(app=app)

def upload_df(df, data_id):
    """
    Upload a Dataframe as a csv to Firebase Storage
    :return: storage_ref
    """

    # Storage location + extension
    storage_ref = data_id + ".csv"

    # Store locally
    df.to_csv(data_id)

    # Upload to Firebase Storage
    blob    = bucket.blob(storage_ref)
    with open(data_id,'rb') as local_file:
        blob.upload_from_file(local_file)

    # Delete locally
    os.remove(data_id)

    return storage_ref

Ответы [ 2 ]

0 голосов
/ 03 января 2019

, если вы просто хотите уменьшить длину кода и этапы создания и удаления файлов, вы можете использовать upload_from_string:

import firebase_admin
from firebase_admin import db, storage

cred   = firebase_admin.credentials.Certificate(cert_json)
app    = firebase_admin.initialize_app(cred, config)
bucket = storage.bucket(app=app)

def upload_df(df, data_id):
    """
    Upload a Dataframe as a csv to Firebase Storage
    :return: storage_ref
    """
    storage_ref = data_id + '.csv'
    blob = bucket.blob(storage_ref)
    blob.upload_from_string(df.to_csv())

    return storage_ref

https://googleapis.github.io/google-cloud-python/latest/storage/blobs.html#google.cloud.storage.blob.Blob.upload_from_string

0 голосов
/ 02 января 2019

С python-firebase и to_dict :

postdata = my_df.to_dict()

# Assumes any auth/headers you need are already taken care of.
result = firebase.post('/my_endpoint', postdata, {'print': 'pretty'})
print(result)
# Snapshot info

Вы можете получить данные обратно, используя информацию и конечную точку снимка, и восстановить dfс from_dict().Вы можете адаптировать это решение к решениям SQL и JSON, для которых pandas также имеет поддержку.

В качестве альтернативы и в зависимости от того, откуда выполняется сценарий, вы можете рассмотреть обработку firebase как db и использованиеdbapi из firebase_admin (отметьте this out.)

Что касается того, соответствует ли это наилучшей практике, трудно сказать, ничего не зная о вашем сценарии использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...