You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Pandas按年统计公司人员事件数量及在职员工数

人员事件统计实现方案(基于Pandas)

前置预处理

先统一转换日期列的格式,避免后续统计出错:

import pandas as pd

# 日期格式转换,format参数根据实际日期字符串规则调整
df["hire_date"] = pd.to_datetime(df["hire_date"], format="%d.%m.%Y")
df["event_start_date"] = pd.to_datetime(df["event_start_date"], format="%d.%m.%Y")

1. 统计每年入职数量

按要求入职时间统一以hire_date为准,每个员工仅对应一条入职记录,因此先对员工ID去重再按年份统计:

# 去重后统计各年份入职人数
hire_stats = df.drop_duplicates("employee_id")["hire_date"].dt.year.value_counts().sort_index()
# 格式化输出
hire_stats = hire_stats.reset_index()
hire_stats.columns = ["年份", "入职人数"]

2. 统计每年离职数量

筛选事件类型为termination的记录,按事件发生年份统计即可:

# 筛选离职事件按年统计
termination_stats = df[df["event"] == "termination"]["event_start_date"].dt.year.value_counts().sort_index()
# 格式化输出
termination_stats = termination_stats.reset_index()
termination_stats.columns = ["年份", "离职人数"]

3. 统计每年在职员工数量

默认统计逻辑为:统计年份晚等于入职年份,且早于离职年份(无离职记录则默认至今在职),不含临时请假的扣除,如果需要统计扣除请假的在职人数可额外关联leave事件的时间范围计算。

# 先聚合每个员工的入职、离职年份
employee_info = df.groupby("employee_id").agg(
    hire_year = ("hire_date", lambda x: x.dt.year.iloc[0]),
    # 没有离职记录的员工默认离职年份为9999,代表至今在职
    termination_year = ("event_start_date", lambda x: x[df.loc[x.index, "event"]=="termination"].dt.year.iloc[0] if (df.loc[x.index, "event"]=="termination").any() else 9999)
).reset_index()

# 确定统计的年份范围,可根据需求自行调整
min_year = employee_info["hire_year"].min()
max_year = pd.Timestamp.now().year
all_years = range(min_year, max_year+1)

# 遍历统计每年在职人数
active_stats = []
for year in all_years:
    active_num = len(employee_info[
        (employee_info["hire_year"] <= year) 
        & (employee_info["termination_year"] > year)
    ])
    active_stats.append({"年份": year, "在职人数": active_num})
active_stats = pd.DataFrame(active_stats)

示例数据输出结果

对应你给出的测试数据,统计结果如下:

  • 入职统计:2005年1人、2007年1人、2019年1人
  • 离职统计:2020年2人
  • 在职统计:2005年1人、2006年1人、2007-2018年每年2人、2019年3人、2020年及之后每年1人

内容的提问来源于stack exchange,提问作者OlaG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:36:03