Schreiben Sie einen Pandas DataFrame an Google Cloud Storage oder BigQuery

Hallo und danke für deine Zeit und Rücksicht. Ich entwickle ein Jupyter Notebook in der Google Cloud Platform / Datalab. Ich habe einen Pandas DataFrame erstellt und möchte diesen DataFrame sowohl für Google Cloud Storage (GCS) als auch für BigQuery schreiben. Ich habe einen Eimer in GCS und habe über den folgenden Code die folgenden Objekte erstellt:

import gcp import gcp.storage as storage project = gcp.Context.default().project_id bucket_name = 'steve-temp' bucket_path = bucket_name bucket = storage.Bucket(bucket_path) bucket.exists() 

Ich habe verschiedene Ansätze auf der Grundlage von Google Datalab Dokumentation ausprobiert, aber weiterhin scheitern. Vielen Dank

  • Wie installiere ich gcp in Python?
  • Kann nicht pyproj Modul in Google Datalab Jupyter Notebook installieren
  • Wie man ein Python-Notebook in einem anderen bei Google Cloud-Datalab ausführen
  • Python-Skript zum Testen auf die zuletzt geänderten Datei - inkonsistente Ergebnisse
  • Python: Öffnen eines Ordners im Explorer / Nautilus / Mac-thingie
  • Navigiere Ordner mit Python
  • Wie lösche ich eine Datei oder einen Ordner?
  • Holen Sie den Ordnernamen der Datei in Python
  • Python-gzip-Ordner-Struktur beim Zippen einzelner Datei
  • 3 Solutions collect form web for “Schreiben Sie einen Pandas DataFrame an Google Cloud Storage oder BigQuery”

    Versuchen Sie das folgende Arbeitsbeispiel:

     from datalab.context import Context import datalab.storage as storage import datalab.bigquery as bq import pandas as pd # Dataframe to write simple_dataframe = pd.DataFrame(data=[{1,2,3},{4,5,6}],columns=['a','b','c']) sample_bucket_name = Context.default().project_id + '-datalab-example' sample_bucket_path = 'gs://' + sample_bucket_name sample_bucket_object = sample_bucket_path + '/Hello.txt' bigquery_dataset_name = 'TestDataSet' bigquery_table_name = 'TestTable' # Define storage bucket sample_bucket = storage.Bucket(sample_bucket_name) # Create storage bucket if it does not exist if not sample_bucket.exists(): sample_bucket.create() # Define BigQuery dataset and table dataset = bq.Dataset(bigquery_dataset_name) table = bq.Table(bigquery_dataset_name + '.' + bigquery_table_name) # Create BigQuery dataset if not dataset.exists(): dataset.create() # Create or overwrite the existing table if it exists table_schema = bq.Schema.from_dataframe(simple_dataframe) table.create(schema = table_schema, overwrite = True) # Write the DataFrame to GCS (Google Cloud Storage) %storage write --variable simple_dataframe --object $sample_bucket_object # Write the DataFrame to a BigQuery table table.insert_data(simple_dataframe) 

    Ich habe dieses Beispiel und die Datei _table.py von der datalab github Seite als Referenz verwendet. Sie können andere datalab Quellcode-Dateien auf diesem Link finden.

    Verwenden der Google Cloud Datalab Dokumentation

     import datalab.storage as gcs gcs.Bucket('bucket-name').item('to/data.csv').write_to(simple_dataframe.to_csv(),'text/csv') 

    Ich denke, du musst es in eine einfache Byte-Variable laden und einen %% storage schreiben schreiben –variable $ sample_bucketpath (siehe das doc) in einer separaten Zelle … Ich stelle es immer noch heraus … Aber das ist grob Die umgekehrte von dem, was ich tun musste, um eine CSV-Datei zu lesen, ich weiß nicht, ob es einen Unterschied macht zu schreiben, aber ich musste BytesIO verwenden, um den Puffer zu lesen, der durch den Befehl %% storage gelesen wurde … Hoffe es Hilft, lass es mich wissen!

    Python ist die beste Programmiersprache der Welt.