Tamaño de trozo en Pandas

Manav Narula 21 junio 2023
Tamaño de trozo en Pandas

La librería pandas en Python nos permite trabajar con DataFrames. Los datos se organizan en filas y columnas en un DataFrame.

Podemos leer datos de múltiples fuentes en un DataFrame.

En situaciones de la vida real, podemos manejar conjuntos de datos que contienen miles de filas y columnas. Este conjunto de datos se puede leer en un DataFrame dependiendo de la fuente.

Tamaño de trozo en Pandas

A veces, usamos el parámetro chunksize mientras leemos conjuntos de datos grandes para dividir el conjunto de datos en fragmentos de datos. Especificamos el tamaño de estos trozos con el parámetro chunksize.

Esto ahorra memoria computacional y mejora la eficiencia del código.

Primero, leamos un archivo CSV sin usar el parámetro chunksize en la función read_csv(). En nuestro ejemplo, leeremos un conjunto de datos de muestra que contiene críticas de películas.

import pandas as pd

df = pd.read_csv("ratings.csv")
print(df.shape)
print(df.info)

Producción :

(25000095, 4)
<bound method DataFrame.info of           userId  movieId  rating   timestamp
0              1      296     5.0  1147880044
1              1      306     3.5  1147868817
2              1      307     5.0  1147868828
3              1      665     5.0  1147878820
4              1      899     3.5  1147868510
...          ...      ...     ...         ...
25000090  162541    50872     4.5  1240953372
25000091  162541    55768     2.5  1240951998
25000092  162541    56176     2.0  1240950697
25000093  162541    58559     4.0  1240953434
25000094  162541    63876     5.0  1240952515

[25000095 rows x 4 columns]>

En el ejemplo anterior, leemos el conjunto de datos dado y mostramos sus detalles. El atributo forma devuelve las filas y columnas, 25000095 y 4, respectivamente.

También mostramos información sobre las filas y columnas del conjunto de datos usando el atributo info.

Podemos ver que este conjunto de datos contiene 2500005 filas y se necesita mucha memoria de la computadora para procesar conjuntos de datos tan grandes. En tales casos, podemos usar el parámetro chunksize.

Para esto, primero comprendamos qué son los iteradores en Python.

Una secuencia iterable se puede repetir utilizando un bucle for. El bucle for aplica el método iter() a tales objetos internamente para crear iteradores.

Podemos acceder a los elementos de la secuencia con la función next().

Cuando usamos el parámetro chunksize, obtenemos un iterador. Podemos iterar a través de este objeto para obtener los valores.

import pandas as pd

df = pd.read_csv("ratings.csv", chunksize=10000000)
for i in df:
    print(i.shape)

Producción :

(10000000, 4)
(10000000, 4)
(5000095, 4)

En el ejemplo anterior, especificamos el parámetro chunksize con algún valor, y lee el conjunto de datos en fragmentos de datos con las filas dadas. Para nuestro conjunto de datos, teníamos tres iteradores cuando especificamos el operador chunksize como 10000000.

El objeto devuelto no es un DataFrame sino un objeto pandas.io.parsers.TextFileReader.

Podemos iterar a través del objeto y acceder a los valores. Tenga en cuenta que el número de columnas es el mismo para cada iterador, lo que significa que el parámetro chunksize solo considera las filas al crear los iteradores.

Este parámetro está disponible con otras funciones que pueden leer datos de otras fuentes como pandas.read_json, pandas.read_stata, pandas.read_sql_table, pandas.read_sas, y más. Se recomienda consultar la documentación oficial antes de utilizar este parámetro para ver su disponibilidad.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn