web-dev-qa-db-ja.com

pandas S3のデータフレームpython

pandas dataframeがあります。このデータフレームをS3の寄木細工のファイルに書き込みたいのですが、同じサンプルコードが必要です。グーグルしようとしましたが、動作するサンプルを取得できませんでしたコード。

11
Alexsander

pyarrowboto を組み合わせることができます。

簡単なサンプルコード:

def main():
    data = {0: {"data1": "value1"}}
    df = pd.DataFrame.from_dict(data, orient='index')
    write_pandas_parquet_to_s3(
        df, "bucket", "folder/test/file.parquet", ".tmp/file.parquet")


def write_pandas_parquet_to_s3(df, bucketName, keyName, fileName):
    # dummy dataframe
    table = pa.Table.from_pandas(df)
    pq.write_table(table, fileName)

    # upload to s3
    s3 = boto3.client("s3")
    BucketName = bucketName
    with open(fileName) as f:
       object_data = f.read()
       s3.put_object(Body=object_data, Bucket=BucketName, Key=keyName)
1
andreas

参考までに、次のコードが機能します。

s3_url = 's3://bucket/folder/bucket.parquet.gzip'
df.to_parquet(s3_url, compression='gzip')

to_parquetを使用するには、pyarrowまたはfastparquetをインストールする必要があります。また、.awsフォルダーにあるconfigおよびcredentialsファイルに正しい情報があることを確認してください。

0
Kiat