Lesen Sie csv aus Google Cloud storage pandas dataframe
Ich versuche, mich zum Lesen einer csv-Datei vorhanden auf der Google Cloud Storage-bucket auf Pandas dataframe.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from io import BytesIO
from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket('createbucket123')
blob = bucket.blob('my.csv')
path = "gs://createbucket123/my.csv"
df = pd.read_csv(path)
Es zeigt diese Fehlermeldung:
FileNotFoundError: File b'gs://createbucket123/my.csv' does not exist
Was mache ich falsch, ich bin nicht in der Lage zu finden, jede Lösung, die nicht mit google datalab?
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE
Ab der version 0.24 von pandas,
read_csv
unterstützt das Lesen direkt aus Google Cloud Storage. Geben Sie einfach link zu dem Eimer wie diese:Lasse ich die drei anderen Optionen der Vollständigkeit halber.
Ich werde Sie unten.
Die harte Tour: do-it-yourself-code
Ich geschrieben habe, einige Komfort-Funktionen zum Lesen von Google-Speicherplatz. Um Sie lesbarer zu machen, fügte ich Typ-Annotationen. Wenn Sie zufällig auf Python 2, einfach entfernen Sie diese und code wird funktionieren alle gleich.
Es funktioniert gleichermaßen auf öffentliche und private Daten-sets, vorausgesetzt, Sie sind zugelassen. In diesem Ansatz müssen Sie nicht zuerst herunterladen der Daten auf Ihrem lokalen Laufwerk.
Wie es zu benutzen:
Code:
gcsfs
gcsfs ist "Pythonic Datei-system für Google Cloud Storage".
Wie es zu benutzen:
dask
Dask "bietet erweiterte Parallelität für Analysen, sodass die Leistung bei der Skala für die tools, die Sie lieben". Es ist toll, wenn Sie brauchen, um den Umgang mit großen Datenmengen in Python. Dask versucht zu imitieren, um viel von der
pandas
API, so dass es einfach zu bedienen für Einsteiger.Hier ist die read_csv
Wie es zu benutzen:
Andere Möglichkeit ist die Verwendung TensorFlow, die kommt mit der Fähigkeit zu tun, ein streaming-Lesen von Google-Cloud-Speicher:
Mit tensorflow gibt Ihnen auch eine bequeme Art und Weise zu handhaben wildcards im Dateinamen. Zum Beispiel:
Lesen wildcard CSV in Pandas
Hier ist code, der gelesen wird, alle CSVs entsprechen einem bestimmten Muster (e.g: gs://bucket/some/dir/Zug-*) in ein Pandas dataframe:
Nutzung
read_csv
nicht unterstützengs://
Aus der Dokumentation:
Können Sie laden Sie die Datei herunter oder Holen Sie als string, um Sie zu manipulieren.
Als der
pandas==0.24.0
dieses nativ unterstützt wird, wenn Siegcsfs
installiert: https://github.com/pandas-dev/pandas/pull/22704.Bis zum offiziellen release können Sie versuchen, es mit
pip install pandas==0.24.0rc1
.Gibt es drei Möglichkeiten für den Zugriff auf Dateien in der GCS:
Unter Anwendung von Schritt 1, setup der GSC für Ihre Arbeit. Nach dem haben Sie:
Dann müssen Sie die Cloud-Storage-bucket-Namen und erstellen von lese - /schreib-Funktionen für den Zugriff auf Ihre Eimer ein:
Finden Sie die restlichen Lesen/schreiben-tutorial hier:
Wenn ich deine Frage verstanden korrekt, dann vielleicht dieser link kann u helfen sich einen besseren URL für Ihre read_csv() Funktion :
https://cloud.google.com/storage/docs/access-public-data