Muestreo y datos aleatorios en Pandas
Pandas ofrece funciones de muestreo aleatorio enriquecidas, que permiten seleccionar muestras aleatorias del conjunto de datos según los requisitos, y también admite la generación de datos aleatorios.
Muestreo aleatorio
Método sample
Ejemplo
import pandas as pd
import numpy as np
# Crear un conjunto de datos grande
df = pd.DataFrame({
"ID": range(1, 1001),
"Valor": np.random.randn(1000)
})
# Seleccionar aleatoriamente 5 filas
print("Selección aleatoria de 5 filas:")
print(df.sample(5))
print()
# Extraer el 30% de los datos
print("Muestreo aleatorio del 30%:")
print(df.sample(frac=0.3))
print()
# Muestreo con reemplazo
print("Muestreo con reemplazo de 5 filas:")
print(df.sample(5, replace=True))
import numpy as np
# Crear un conjunto de datos grande
df = pd.DataFrame({
"ID": range(1, 1001),
"Valor": np.random.randn(1000)
})
# Seleccionar aleatoriamente 5 filas
print("Selección aleatoria de 5 filas:")
print(df.sample(5))
print()
# Extraer el 30% de los datos
print("Muestreo aleatorio del 30%:")
print(df.sample(frac=0.3))
print()
# Muestreo con reemplazo
print("Muestreo con reemplazo de 5 filas:")
print(df.sample(5, replace=True))
Establecer semilla aleatoria
Ejemplo
import pandas as pd
import numpy as np
# Configurar la semilla aleatoria para asegurar resultados reproducibles
np.random.seed(42)
df = pd.DataFrame({
"ID": range(1, 11),
"Valor": np.random.randn(10)
})
print("Usando la semilla aleatoria 42:")
print(df.sample(3))
# Ejecutar nuevamente la misma semilla para obtener los mismos resultados
print("\n"Ejecutando de nuevo la misma semilla:")
np.random.seed(42)
print(df.sample(3))
import numpy as np
# Configurar la semilla aleatoria para asegurar resultados reproducibles
np.random.seed(42)
df = pd.DataFrame({
"ID": range(1, 11),
"Valor": np.random.randn(10)
})
print("Usando la semilla aleatoria 42:")
print(df.sample(3))
# Ejecutar nuevamente la misma semilla para obtener los mismos resultados
print("\n"Ejecutando de nuevo la misma semilla:")
np.random.seed(42)
print(df.sample(3))
Generación de datos aleatorios
Ejemplo
import pandas as pd
import numpy as np
# Generar enteros aleatorios
print("Enteros aleatorios [0, 10):")
print(pd.Series(np.random.randint(0, 10, 5)))
print()
# Generar números de punto flotante aleatorios
print("Flotantes aleatorios [0, 1):")
print(pd.Series(np.random.random(5)))
print()
# Generar números aleatorios con distribución normal
print("Distribución normal N(0, 1):")
print(pd.Series(np.random.randn(5)))
print()
# Especificar media y desviación estándar
print("Distribución normal N(10, 2):")
print(pd.Series(np.random.normal(10, 2, 5)))
print()
# Selección aleatoria
choices = ["A", "B", "C", "D"]
print("Selección aleatoria:")
print(pd.Series(np.random.choice(choices, 10)))
import numpy as np
# Generar enteros aleatorios
print("Enteros aleatorios [0, 10):")
print(pd.Series(np.random.randint(0, 10, 5)))
print()
# Generar números de punto flotante aleatorios
print("Flotantes aleatorios [0, 1):")
print(pd.Series(np.random.random(5)))
print()
# Generar números aleatorios con distribución normal
print("Distribución normal N(0, 1):")
print(pd.Series(np.random.randn(5)))
print()
# Especificar media y desviación estándar
print("Distribución normal N(10, 2):")
print(pd.Series(np.random.normal(10, 2, 5)))
print()
# Selección aleatoria
choices = ["A", "B", "C", "D"]
print("Selección aleatoria:")
print(pd.Series(np.random.choice(choices, 10)))
División de conjuntos de entrenamiento y prueba
Ejemplo
import pandas as pd
import numpy as np
# Simular un conjunto de datos
df = pd.DataFrame({
"Característica 1": np.random.randn(100),
"Característica 2": np.random.randn(100),
"Objetivo": np.random.choice([0, 1], 100)
})
# Dividir en conjunto de entrenamiento y prueba (80% / 20%)
train = df.sample(frac=0.8, random_state=42)
test = df.drop(train.index)
print(f"Conjunto de entrenamiento: {len(train)} filas")
print(f"Conjunto de prueba: {len(test)} filas")
print()
# Muestreo estratificado (mantener la proporción de la variable objetivo)
print("Muestreo estratificado:")
from sklearn.model_selection import train_test_split
# Se necesita instalar scikit-learn: pip install scikit-learn
# train, test = train_test_split(df, test_size=0.2, stratify=df["objetivo"])
import numpy as np
# Simular un conjunto de datos
df = pd.DataFrame({
"Característica 1": np.random.randn(100),
"Característica 2": np.random.randn(100),
"Objetivo": np.random.choice([0, 1], 100)
})
# Dividir en conjunto de entrenamiento y prueba (80% / 20%)
train = df.sample(frac=0.8, random_state=42)
test = df.drop(train.index)
print(f"Conjunto de entrenamiento: {len(train)} filas")
print(f"Conjunto de prueba: {len(test)} filas")
print()
# Muestreo estratificado (mantener la proporción de la variable objetivo)
print("Muestreo estratificado:")
from sklearn.model_selection import train_test_split
# Se necesita instalar scikit-learn: pip install scikit-learn
# train, test = train_test_split(df, test_size=0.2, stratify=df["objetivo"])