Python 如何计算熊猫的百分比和累计百分比

Python 如何计算熊猫的百分比和累计百分比,python,pandas,Python,Pandas,我是根据涉及事故的驾驶员计算得出的,每个年龄组的百分比,以及累计百分比(例如,39岁之前的驾驶员涉及所有事故的50%) 下面的代码可以工作,但我相信有一种更简洁/高效/清晰的方法可以做到这一点 df = pd.DataFrame({'Age group': ['20-29','30-39','40-49','50-59','60 and up'], 'Number accidents': [10000, 8000, 6000, 3000, 1000]})

我是根据涉及事故的驾驶员计算得出的,每个年龄组的百分比,以及累计百分比(例如,39岁之前的驾驶员涉及所有事故的50%)

下面的代码可以工作,但我相信有一种更简洁/高效/清晰的方法可以做到这一点

df = pd.DataFrame({'Age group': ['20-29','30-39','40-49','50-59','60 and up'], 
                   'Number accidents': [10000, 8000, 6000, 3000, 1000]})
num_accidents = sum(df['Number accidents'])
df['% accidents'] = df['Number accidents'] / num_accidents * 100
per_acc = 0
for i in df.index:
    per_acc += df.loc[i,'% accidents']
    df.loc[i,'% accidents accumulated'] = per_acc
df
下面是上面代码的输出

   Age group  Number accidents  % accidents  % accidents accumulated
0      20-29             10000    35.714286                35.714286
1      30-39              8000    28.571429                64.285714
2      40-49              6000    21.428571                85.714286
3      50-59              3000    10.714286                96.428571
4  60 and up              1000     3.571429               100.000000

请提供更好的编写方法,您可以使用
cumsum
,请参阅

这样就可以做到:

df['% accidents accumulated'] = df['% accidents'].cumsum()

到目前为止,最有效、最周密、最清晰的方法是:

df = pd.DataFrame({'Age group': ['20-29','30-39','40-49','50-59','60 and up'], 
                   'Number accidents': [10000, 8000, 6000, 3000, 1000]})
df['% accidents'] = df['Number accidents'] / df['Number accidents'].sum() * 100
df['% accidents accumulated'] = df['% accidents'].cumsum()

谢谢大家的帮助!我很想知道是否有更好的方法。

你可以使用:df['accu']=df['%contractions']]。cumsum()很酷,很管用!获得初始百分比怎么样?有更好的方法吗?您的意思是:df['%contractions contracted']=df['%contractions']]。cumsum()正确吗?获取初始百分比如何?有更好的方法吗?这确实是个打字错误,对不起。你计算初始百分比的方法和我的方法很相似,