import pandas as pd
import numpy as np

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

# Generate data for 1000 customers
num_rows = 10000

# Age: 18-80, with 10% missing values
age = np.random.randint(18, 81, size=num_rows).astype(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
income = np.random.randint(20000, 150001, size=num_rows).astype(float)
income[np.random.choice(num_rows, size=int(num_rows * 0.15), replace=False)] = np.nan

# Purchases: 5-50, with 5% missing values
purchases = np.random.randint(5, 51, size=num_rows).astype(float)
purchases[np.random.choice(num_rows, size=int(num_rows * 0.05), replace=False)] = np.nan

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

# Add churn label (yes/no, with 30% yes)
df['churn'] = np.random.choice(['yes', 'no'], size=len(df), p=[0.3, 0.7])

# Save to CSV
df.to_csv("customers_churn_income.csv", index=False)
print("Generated customers_churn_income.csv with 10,000 rows!")

