AWS SDK for pandas (awswrangler) is the official AWS Python library that connects pandas DataFrames with Athena, Redshift, S3, Glue, DynamoDB, Timestream, and more, enabling data lake I/O and ETL in a few lines of code.
- 3.18.0
- Published at
- 1d ago
- 4,124
- Stars
- 6,726
- Download
- Synced at
- 9h ago
Latest release
3.18.0Oct 27, 2026, 09:55 PMREADME
Project Overview
AWS SDK for pandas (package name awswrangler) is an open-source Python library from AWS Professional Services, positioned as pandas on AWS: it connects DataFrames directly to AWS data services. It provides high-level APIs for S3 (Parquet, CSV, JSON, Excel), Athena, Redshift, Glue Catalog, Timestream, DynamoDB, OpenSearch, Neptune, and more — reading databases, landing data in a lake, and running SQL queries take only a line or two. With Modin and Ray, the same code can scale out to a cluster.
| Item | Value |
|---|---|
| Language | Python |
| Platform | Any Python environment (incl. Lambda, Glue, EMR, SageMaker) |
| Integrations | S3, Athena, Redshift, Glue, Timestream, DynamoDB, OpenSearch, Neptune and more |
| License | Apache-2.0 |
The official high-speed channel between pandas and AWS data services.
Key Features
- S3 data lake I/O:
wr.s3.to_parquet/read_parquetwork with datasets on S3 and register Glue tables automatically - Athena queries:
wr.athena.read_sql_queryruns SQL and returns results straight into a DataFrame - Redshift integration: connections from Glue Catalog, with query, COPY/UNLOAD, and upsert support
- Multiple databases: bulk read/write for MySQL, PostgreSQL, SQL Server, and Oracle
- Timestream time series: write and query between DataFrames and Amazon Timestream
- DynamoDB and OpenSearch: wrappers for key-value data and search clusters
- Scale-out execution: distribute processing across clusters with Modin and Ray
- Fully typed: type annotations throughout, checked with mypy, IDE-friendly
Target Audience
- Data engineers on AWS
- Data scientists analyzing with pandas
- Developers building ETL pipelines
- Teams running data jobs on Lambda / Glue / EMR
Quick Start
- Install:
pip install awswrangler(optional modules need extras likepip install 'awswrangler[redshift]') - Configure AWS credentials and start using:
import awswrangler as wr
import pandas as pd
df = pd.DataFrame({'id': [1, 2], 'value': ['foo', 'boo']})
# Write to the data lake and register a Glue table
wr.s3.to_parquet(df=df, path='s3://bucket/dataset/', dataset=True,
database='my_db', table='my_table')
# Query back into a DataFrame via Athena
df = wr.athena.read_sql_query('SELECT * FROM my_table', database='my_db')- See the official docs and the tutorials directory of Notebooks for more
Core Advantages
- Minimal code: operations that take dozens of boto3 lines usually take one or two
- Officially maintained: service coverage and compatibility handled by the AWS team
- Local to cloud consistency: one API moves seamlessly from notebooks to production pipelines
System Requirements
| Item | Requirement |
|---|---|
| Language | Python |
| OS | Linux, macOS, Windows |
| Dependencies | AWS credentials with permissions for the target services |
Notes
- Optional modules since 3.0: install extras explicitly, e.g.
awswrangler[redshift]orawswrangler[mysql]; the default install includes core features only - Incurs AWS costs: Athena scans and S3 requests are billed by usage — watch data scan volume before querying
- Lambda deployment: an official Lambda Layer is provided, so no manual dependency packaging is needed