Pandas
1 min read
Updated 4 Aug 2026
Project 3 — Employee Salary Analysis
emp = pd.DataFrame({
emp = pd.DataFrame({
'dept': ['Eng','Eng','Eng','Sales','Sales','HR'],
'level': ['Jr','Sr','Sr','Jr','Sr','Sr'],
'salary': [70,120,110,50,80,90]})
# Salary z-score WITHIN each department (transform keeps row count)
emp['salary_z'] = emp.groupby('dept')['salary'].transform(
lambda s: (s - s.mean()) / s.std(ddof=0))
# Departments whose average salary exceeds 80k
emp.groupby('dept').filter(lambda g: g['salary'].mean() > 80)
# Highest paid per department
emp.loc[emp.groupby('dept')['salary'].idxmax()]
Key technique: transform for per-group features; idxmax inside a groupby to fetch the top row per group.