【Python】pandasのDataFrame等からs3にアップロードする方法まとめ?

【Python】pandasのDataFrame等からs3にアップロードする方法まとめ?

毎回boto3のドキュメントが読みにくすぎるせいで詰まりがちなのでメモっておきます。

他にも色々方法はありそうですが、代表的な方法はこんなものですかね…?

環境

python==3.8.1

pandas==1.0.2

boto3==1.12.23

Boto3を使う(一度ローカルに保存する)

良く見る一般的な使い方かなと思います。Pickleだろうと何だろうと、パスさえ指定すればいいので汎用的ですよね。
特にデータサイエンス界隈ではメモリ上のみにデータを展開することよりも、一度ローカルに保存することが多いのでこのような方法がネットを見ても沢山あります。

一度ローカルにファイルを展開するのでファイル名の配慮や完了後のデータ削除等地味に面倒なことが多いです。

Boto3を使う(ローカルには保存しない)

PandasのDataFrame(等)をcsvとして保存する

Pandasは高機能すぎて使いこなすのは大変ですが、本当に何でも出来る感じですね…。

  1. df.to_csvの引数にNoneを指定することでstr型として結果が帰る
  2. str型なのでそのままだとデフォルトの文字コードが適用されるので、str.encode()で任意の文字コードを指定する

というような感じです。便利。

pickleを保存する

pickleもjsonと同じようにdumpsを使うとファイルに保存ではなく結果が帰ってくるためそれを使うだけです。

 

1つのことをやるのにかなりの数のAPIが用意されているのでどれを使うのが最適なのか未だに良く分かってないですが、まあ保存は出来ているので…。。

df.to_csvの引数で直接s3を指定

これは自分が試せていないのですがどうやら以下のような感じで出来るみたいです。本当に高機能だな…。

※s3fsのインストールが必要です。

以下参考ページです。

Pyhonカテゴリの最新記事