gpt4 book ai didi

Pandas:如何计算周转率?

转载 作者:行者123 更新时间:2023-12-05 00:52:11 26 4
gpt4 key购买 nike

我想使用 Pandas 计算一组人的流失率。小组的规模可能会发生变化,但我想知道每年离开的人数百分比。

最好用一个例子来解释。这是我的示例数据:

  teachers  year
0 John 2007
1 Paul 2007
2 Mary 2007

3 John 2008
4 Paul 2008
5 Abel 2008
6 Watt 2008

7 John 2009
8 Mary 2009

我想到达这个数据集:
year turnover 
2008 .33333
2009 .75

第一年,玛丽离开了,第二年,保罗、亚伯和瓦特离开了。它会产生某种偏见:如果群体在缩小,那么离职率会更大。

最佳答案

计划

  • 我将使用 'year' 设置索引和 'teachers' , 所以我 assign x=1 的虚拟变量提前时间。
  • 我要'year'作为我的索引,所以我 unstack'teachers'在列中。我使用 fill_value=0选择在特定年份没有教师的情况下填写零。
  • 使用 diff并检查是否等于 -1 确定营业额事件。 sum(1)总结所有营业额事件。
  • d1.sum(1).shift()计算上一年的所有教师。
  • 划分以获得营业额。

  • d1 = pd.Series(1, [df.year, df.teachers]).unstack(fill_value=0)
    d1.diff().eq(-1).sum(1).div(d1.sum(1).shift(), 0).dropna()

    year
    2008 0.333333
    2009 0.750000
    dtype: float64

    正如@jrjc 在评论中指出的,我的第一行是 crosstab .考虑到这一点,我们可以将代码简化为:
    d1 = pd.crosstab(df.year, df.teachers)
    d1.diff().eq(-1).sum(1).div(d1.sum(1).shift(), 0).dropna()

    一行使用 pipe
    pd.crosstab(df.year, df.teachers).pipe(
    lambda c: c.diff().eq(-1).sum(1).div(c.sum(1).shift(),0).dropna()
    )

    关于Pandas:如何计算周转率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276403/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com