import pandas as pd
import numpy as np

# Set a random seed for reproducibility
np.random.seed(42)

# Generate data for 100 customers
num_rows = 100000

# Age: 18-80, with 10% missing values (use float to allow NaN)
age = np.random.randint(18, 81, size=num_rows).astype(float)  # Convert to float
age[np.random.choice(num_rows, size=int(num_rows * 0.1), replace=False)] = np.nan

# Income: 20,000-150,000, with 15% missing values (use float to allow NaN)
income = np.random.randint(20000, 150001, size=num_rows).astype(float)  # Convert to float
income[np.random.choice(num_rows, size=int(num_rows * 0.15), replace=False)] = np.nan

# Gender: Male/Female, with 5% missing values
gender = np.random.choice(['Male', 'Female'], size=num_rows)
gender[np.random.choice(num_rows, size=int(num_rows * 0.05), replace=False)] = np.nan

# Create DataFrame
df = pd.DataFrame({
    'age': age,
    'income': income,
    'gender': gender
})

# Save to CSV
df.to_csv('customers.csv', index=False)
print("Generated customers.csv with 100000 rows!")
