in

Leer y escribir archivos desde / hacia Amazon S3 con Pandas

1lw7Em1TV8ccshUHypbXgrg

Uso de la biblioteca boto3 y las API de pandas compatibles con s3fs

Imagen que muestra el marco de datos de pandas que se lee y escribe archivos en Amazon S3

Contenido: pandas read_csv from s3

  • Escriba el marco de datos de pandas en un archivo CSV en S3
  • > Usando boto3
  • > Uso de la API de pandas compatible con s3fs
  • Leer un archivo CSV en S3 en un marco de datos de pandas
  • > Usando boto3
  • > Uso de la API de pandas compatible con s3fs
  • Resumen

⚠ Lea antes de continuar

Existe un problema pendiente con respecto a la resolución de dependencias cuando tanto boto3 como s3fs se especifican como dependencias en un proyecto. Vea este problema de GitHub si está interesado en los detalles.

Esto sigue siendo un problema a partir de 2021–02–19.

Si necesita ambos paquetes (por ejemplo, para ejecutar los siguientes ejemplos en el mismo entorno, o más en general para usar s3fs para interacciones convenientes de pandas a S3 y boto3 para otras interacciones programáticas con AWS), deberá anclar su s3fs a la versión “≤0,4” como solución alternativa (gracias Martin Campbell).

Para seguir, deberá instalar los siguientes paquetes de Python

  • boto3
  • s3fs (versión ≤0.4)
  • pandas
python -m pip install boto3 pandas "s3fs<=0.4"

💭 Notará que si bien necesitamos importar boto3 y pandas en los siguientes ejemplos, no necesitamos importar s3fs a pesar de tener que instalar el paquete. La razón es que usamos directamente boto3 y pandas en nuestro código, pero no usamos s3fs directamente. Aún así, los pandas lo necesitan para conectarse con Amazon S3 bajo el capó.

pandas ahora usa s3fs para manejar conexiones S3. Esto no debería romper ningún código. Sin embargo, desde s3fs no es una dependencia requerida, deberá instalarlo por separado, como boto en versiones anteriores de pandas. (GH11915).

Notas de la versión para pandas versión 0.20.1

Escriba el marco de datos de pandas en un archivo CSV en S3

Usando boto3

  Script de demostración para escribir un marco de datos de pandas en un archivo CSV en S3 usando la biblioteca boto3

Uso de la API de pandas compatible con s3fs

  Script de demostración para escribir un marco de datos de pandas en un archivo CSV en S3 utilizando las API de pandas compatibles con s3fs

Leer un archivo CSV en S3 en un marco de datos de pandas

Usando boto3

  Script de demostración para leer un archivo CSV de S3 en un marco de datos de pandas utilizando la biblioteca boto3

Uso de la API de pandas compatible con s3fs

  Script de demostración para leer un archivo CSV de S3 en un marco de datos de pandas utilizando las API de pandas compatibles con s3fs

Resumen: amazon acepta paysafecard

Es posible que desee utilizar boto3 si yEstá utilizando pandas en un entorno en el que boto3 ya está disponible y también debe interactuar con otros servicios de AWS.

Sin embargo, el uso de boto3 requiere un poco más de código y hace uso de la io.StringIO («Un flujo en memoria para E / S de texto») y el administrador de contexto de Python (el with declaración). Esas son dos cosas adicionales que es posible que aún no conozca, o que no quisiera aprender o pensar para «simplemente» leer / escribir un archivo en Amazon S3.

Sin embargo, recomiendo aprenderlos; surgen con bastante frecuencia, especialmente el with declaración. Pero, pandas se adapta a aquellos de nosotros que «simplemente» queremos leer y escribir archivos desde / hacia Amazon S3 usando s3fs bajo el capó para hacer precisamente eso, con un código que incluso los usuarios novatos de pandas encontrarían familiar.

aws_credentials = { "key": "***", "secret": "***", "token": "***" }
df = pd.read_csv("s3://...", storage_options=aws_credientials)

o

aws_credentials = { "key": "***", "secret": "***", "token": "***" }
df.to_csv("s3://...", index=False, storage_options=aws_credentials)

¡Gracias por leer!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

i66iDwcLjkeM9xfyUovn7Z 1200 80

Fecha de lanzamiento de Lego Star Wars The Skywalker Saga y más

Gestión de datos e inteligencia predictiva de DataFox