[PYTHON] Ab pandas1.0.0 können Sie die S3 / GCS-URL mit read_pickle () und to_pickle () angeben!

pandas 1.0.0 wurde veröffentlicht.

https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.0.0.html

Als neues Feature

--Pandas.NA, das verschiedene Arten fehlender Werte einheitlich behandelt, wurde probeweise eingeführt.

Persönlich jedoch der obige Versionshinweis 'Andere Verbesserungen' -Erweiterungen) Ich bemerkte die beiläufig geschriebene Beschreibung ganz am Ende:

DataFrame.to_pickle() and read_pickle() now accept URL (GH30163)

Dies bedeutet, dass Sie die Daten, die durch Pickle im Cloud-Speicher verfestigt wurden, direkt speichern und lesen können! ??

Ich habe es aus einem Grund versucht:

Demonstration

Erstellen Sie einen geeigneten DataFrame wie den folgenden.

df = pd.DataFrame({'hoge': [1, 2, 3], 'fuga': [4, 5, 6], 'piyo': [7, 8, 9]})

Auf diese Weise

hoge fuga piyo
0 1 4 7
1 2 5 8
2 3 6 9

Das konnte ich ausdrücken. [^ 1]

[^ 1]: Diese Tabelle wurde übrigens mit df.to_markdown () ausgegeben, das auch aus pandas 1.0.0 hinzugefügt wurde. Praktisch.

Speichern Sie dies in dem zuvor erstellten AWS S3-Bucket "s3: // tatamiya-test /" und lesen Sie es. [^ 2] [^ 3]

[^ 2]: Ich werde die Einstellungsmethode von IAM und kritischem Schlüssel weglassen. [^ 3]: Ich habe es nicht bestätigt, aber Sie sollten GCS verwenden können.

Für Pandas 0.25.3

Solange es im CSV-Format gespeichert / gelesen wird, war dies mit der herkömmlichen Version möglich.

pd.__version__
# >> '0.25.3'

df.to_csv('s3://tatamiya-test/test.csv', index=None)

pd.read_csv('s3://tatamiya-test/test.csv')
# >> hoge	fuga	piyo
# >> 0	1	4	7
# >> 1	2	5	8
# >> 2	3	6	9

Im Fall von Gurke wurde der PFAD jedoch nicht durch denselben Vorgang erkannt.

pd.__version__
# >> '0.25.3'

df.to_pickle('s3://tatamiya-test/test.pkl')
# >> FileNotFoundError: [Errno 2] No such file or directory: 's3://tatamiya-test/test.pkl'

pd.read_pickle('s3://tatamiya-test/test.pkl')
# >> FileNotFoundError: [Errno 2] No such file or directory: 's3://tatamiya-test/test.pkl'

Für Pandas 1.0.0

Versuchen wir es jetzt mit der neuesten Version 1.0.0.

pd.__version__
# >> '1.0.0'

df.to_pickle('s3://tatamiya-test/test.pkl')

pd.read_pickle('s3://tatamiya-test/test.pkl')
# >> hoge	fuga	piyo
# >> 0	1	4	7
# >> 1	2	5	8
# >> 2	3	6	9

Ich konnte bestätigen, dass es gespeichert und richtig gelesen werden kann!

Am Ende

Bei der Verarbeitung von Daten mit Pandas in der Cloud konnte die URL direkt mit to_csv () angegeben und gelesen werden, auch wenn sich die Datenquelle in S3 oder GCS befindet. Es handelt sich um eine Datei im CSV-Format.

Wenn Sie die Zwischendaten nach dem Formen und Verarbeiten speichern, ist es jedoch besser, den DataFrame oder die Serie als Python-Objekt in eine Byte-Zeichenfolge zu konvertieren und zu speichern.

To_pickle () und read_pickle () waren nützlich, weil sie solche Vorzüge hatten.

Wie oben erwähnt, konnte die S3 / GCS-URL in der Vergangenheit jedoch zu diesem Zeitpunkt nicht als Speicherziel angegeben werden.

Ich musste mir etwas Zeit und Mühe nehmen.

Deshalb war dieses Update nüchtern, aber persönlich sehr dankbar!

(Da die Abwärtskompatibilität jedoch nicht garantiert ist, ist es bisher nicht möglich, 1.0.0 wie im Code einzuführen ...)

Recommended Posts

Ab pandas1.0.0 können Sie die S3 / GCS-URL mit read_pickle () und to_pickle () angeben!
Was Sie mit Tensorflow 2.x tun können und was nicht
[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
Überlegen Sie im Qiita-Artikel, was Sie mit Python tun können
Holen Sie sich OCTA-Simulationsbedingungen aus einer Datei und speichern Sie sie mit Pandas