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 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