Spaces:
Sleeping
Sleeping
File size: 5,241 Bytes
52b35ff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | """Run this once to regenerate sample_data/employees.csv"""
import pandas as pd
import numpy as np
import random
from datetime import date, timedelta
random.seed(42)
np.random.seed(42)
departments = {
"Engineering": ["Junior Software Engineer", "Software Engineer", "Senior Software Engineer",
"Staff Engineer", "Principal Engineer", "Engineering Manager"],
"Data": ["Data Analyst", "Senior Data Analyst", "Data Scientist", "Senior Data Scientist",
"ML Engineer", "Head of Data"],
"Product": ["Product Manager", "Senior Product Manager", "Director of Product"],
"Marketing": ["Marketing Coordinator", "Marketing Manager", "Senior Marketing Manager",
"VP of Marketing"],
"Sales": ["Sales Representative", "Account Executive", "Senior Account Executive",
"Sales Manager", "VP of Sales"],
"Finance": ["Financial Analyst", "Senior Financial Analyst", "Finance Manager", "CFO"],
"HR": ["HR Coordinator", "HR Manager", "Senior HR Manager", "VP of People"],
"Operations": ["Operations Analyst", "Operations Manager", "Director of Operations"],
}
base_salaries = {
"Junior Software Engineer": 72000,
"Software Engineer": 105000,
"Senior Software Engineer": 140000,
"Staff Engineer": 175000,
"Principal Engineer": 210000,
"Engineering Manager": 185000,
"Data Analyst": 75000,
"Senior Data Analyst": 100000,
"Data Scientist": 120000,
"Senior Data Scientist": 155000,
"ML Engineer": 145000,
"Head of Data": 190000,
"Product Manager": 115000,
"Senior Product Manager": 145000,
"Director of Product": 185000,
"Marketing Coordinator": 55000,
"Marketing Manager": 85000,
"Senior Marketing Manager": 110000,
"VP of Marketing": 170000,
"Sales Representative": 60000,
"Account Executive": 90000,
"Senior Account Executive": 115000,
"Sales Manager": 130000,
"VP of Sales": 180000,
"Financial Analyst": 78000,
"Senior Financial Analyst": 105000,
"Finance Manager": 130000,
"CFO": 250000,
"HR Coordinator": 52000,
"HR Manager": 80000,
"Senior HR Manager": 105000,
"VP of People": 160000,
"Operations Analyst": 70000,
"Operations Manager": 100000,
"Director of Operations": 150000,
}
locations = ["New York", "San Francisco", "Austin", "Chicago", "Remote", "Seattle", "Boston"]
employment_types = ["Full-time", "Full-time", "Full-time", "Full-time", "Contract"]
first_names = ["Alice", "Bob", "Carlos", "Diana", "Ethan", "Fiona", "George", "Hannah",
"Ivan", "Julia", "Kevin", "Laura", "Michael", "Nina", "Omar", "Priya",
"Quinn", "Rachel", "Sam", "Tina", "Uma", "Victor", "Wendy", "Xavier",
"Yara", "Zach", "Amelia", "Ben", "Clara", "David", "Elena", "Frank",
"Grace", "Henry", "Iris", "James", "Kate", "Leo", "Maya", "Noah",
"Olivia", "Paul", "Qian", "Rosa", "Steve", "Tara", "Uri", "Vera",
"Will", "Xena"]
last_names = ["Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller", "Davis",
"Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez", "Wilson", "Anderson",
"Thomas", "Taylor", "Moore", "Jackson", "Martin", "Lee", "Perez", "Thompson",
"White", "Harris", "Sanchez", "Clark", "Ramirez", "Lewis", "Robinson",
"Walker", "Young", "Allen", "King", "Wright", "Scott", "Torres", "Nguyen",
"Hill", "Flores", "Green", "Adams", "Nelson", "Baker", "Hall", "Rivera",
"Campbell", "Mitchell", "Carter", "Roberts"]
rows = []
emp_id = 1001
for dept, titles in departments.items():
for title in titles:
n_employees = random.randint(3, 8)
for _ in range(n_employees):
first = random.choice(first_names)
last = random.choice(last_names)
hire_year = random.randint(2018, 2022)
hire_date = date(hire_year, random.randint(1, 12), random.randint(1, 28))
location = random.choice(locations)
emp_type = random.choice(employment_types)
base = base_salaries[title]
for year in [2021, 2022, 2023, 2024]:
if year >= hire_year:
annual_raise = random.uniform(0.03, 0.08)
years_exp = year - hire_year
salary = int(base * (1 + annual_raise) ** years_exp * random.uniform(0.92, 1.12))
rows.append({
"employee_id": emp_id,
"first_name": first,
"last_name": last,
"full_name": f"{first} {last}",
"department": dept,
"job_title": title,
"salary": salary,
"year": year,
"hire_date": hire_date.isoformat(),
"location": location,
"employment_type": emp_type,
})
emp_id += 1
df = pd.DataFrame(rows)
df.to_csv("sample_data/employees.csv", index=False)
print(f"Generated {len(df)} rows, {df['employee_id'].nunique()} unique employees")
print(df.head())
|