Tengo un dataframe df con 9000 identificadores únicos.

como

| id |
  1 
  2 

Quiero generar una muestra aleatoria con reemplazo de estos 9000 identificadores de 100.000 veces.
¿Cómo hacerlo en pyspark

Traté de

df.sample(True,0.5,100)

Pero no sé cómo llegar a 100000 número exacto

  • Para ser claros, usted necesita tomar una muestra aleatoria de 9000 ids, donde cada una de las muestras tiene 4.500 id (que podría repetir ya que nos muestra con reemplazo), y necesita de 100.000 de estas muestras?
  • 9000 es la población de los distintos identificadores que tengo, quiero muestrean a la población a 100000 con reemplazo y al azar. así, en la llanura inglés, quiero recoger un identificador aleatorio 100000 veces a partir de un frasco de 9000 ids en una forma aleatoria. Espero que esto ayude.
  • Lo hizo, gracias. Voy a tratar de trabajar a través de ahora.

1 Comentario

  1. 13

    Bien, así que lo primero es lo primero. Usted probablemente no será capaz de obtener exactamente 100,000 en su (sobre)de la muestra. La razón es que para la muestra de manera eficiente, la Chispa utiliza algo llamado Bernouilli De Muestreo. Básicamente, esto significa que pasa a través de la RDD, y asigna a cada fila de una probabilidad de ser incluido. Así que si quieres un 10% de la muestra, cada fila de forma individual tiene un 10% de probabilidad de ser incluido, pero no toma en cuenta si se añade a la perfección hasta el número que desea, pero tiende a ser bastante cerca para grandes conjuntos de datos.

    El código sería este: df.sample(True, 11.11111, 100). Esto tomará una muestra del conjunto de datos igual a 11.11111 veces el tamaño del conjunto de datos original. Desde 11.11111*9,000 ~= 100,000, obtendrá aproximadamente 100.000 filas.

    Si quieres una exacta de la muestra, usted tiene que utilizar df.takeSample(True, 100000). Sin embargo, esto no es un conjunto de datos distribuidas. Este código devuelve un Array (muy grande). Si puede ser creado en la Memoria Principal, hacer que. Sin embargo, debido a que requieren el exacto número de Id, yo no conozco una manera de hacer que de manera distribuida.

    • Hola Katia, muchas Gracias por la respuesta. Yo no se la cantidad exacta, pero si su muestreo en una forma que yo quiero es lo suficientemente bueno.
    • Usted probablemente significa df.rdd.takeSample() ? No existe tal método df.takeSample()
    • .muestra() no funciona en dataframes para mí, a pesar de su dado en la documentación. Se está trabajando en RDD. Lo que me estoy perdiendo?
    • Consulte la documentación de spark.apache.org/docs/2.1.0/api/python/…

Dejar respuesta

Please enter your comment!
Please enter your name here