Pandas: Cómo crear un DataFrame aleatorio

Publicado el 09 septiembre 2021 por Daniel Rodríguez @analyticslane

En algunos casos son necesarios los conjuntos de datos aleatorios, por ejemplo, para la evaluación del rendimiento de algoritmos. Al trabajar con Pandas muchas veces necesitamos en forma de DataFrame. Algo que directamente no se puede hacer, pero sí usando los generadores de números aleatorios de NumPy, para crear a partir de estos unos DataFrame. Veamos cómo se puede crear un DataFrame aleatorio en Pandas.

Creación de un DataFrame con valores aleatorios reales

Lo más fácil para la creación de un DataFrame aleatorio en Pandas es llamar al método np.random.rand() para crear una matriz y posteriormente convertirla a un objeto de Pandas. Algo que se puede conseguir con el siguiente código.

import pandas as pd
import numpy as np

cols = 4
rows = 3

np.random.seed(0)

pd.DataFrame(np.random.rand(rows, cols))
          0         1         2         3
0  0.548814  0.715189  0.602763  0.544883
1  0.423655  0.645894  0.437587  0.891773
2  0.963663  0.383442  0.791725  0.528895

En este caso se han definido dos variables para guardar el número de filas y columnas. Además de esto se ha incivilizado la semilla del generador de números aleatorios de NumPy para obtener siempre el mismo resultado. Para finalmente crear una matriz aleatoria con cuatro columnas y tres filas y transformada en un DataFrame.

También se pueden poner un nombre a las columnas, para lo que solamente se tiene que pasar una lista a la propia de columnas a la hora de crear el DataFrame. Siendo importante que esta lista contenga tantos valores cómo columnas como la matriz.

pd.DataFrame(np.random.rand(rows, cols), columns=['A', 'B', 'C', 'D'])
          A         B         C         D
0  0.568045  0.925597  0.071036  0.087129
1  0.020218  0.832620  0.778157  0.870012
2  0.978618  0.799159  0.461479  0.780529

Creación de un DataFrame aleatorio de enteros

En el caso de que se desee trabajar con enteros, solamente hay que cambiar la función usada para generar los números aleatorios. Siendo la adecuada en esta caso np.random.randint(). Una función que como primer parámetro tiene el valor mínimo, como segundo el máximo y como tercero el tamaño de la matriz. Así para crear una DataFrame con valores entre 0 y 1000 se puede usar el siguiente código.

pd.DataFrame(np.random.randint(0, 1000, (rows, cols)), columns=['A', 'B', 'C', 'D'])
     A    B    C    D
0   91  896  398  611
1  565  908  633  938
2   84  203  324  774

Conclusiones

En esta entrada se han visto diferentes formas de crear un DataFrame aleatorio con Pandas u NumPy. Unos trucos que se pueden usar para cuando es necesario disponer de un conjunto de datos rápidamente para evaluar algún código.