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.