pandas_VS_Excel条件统计人数与求和

2022-10-25 15:22:03 浏览数 (1)

yhd-pandas分类统计个数与和

◆【解决问题】

在一次工作中遇到这样一个问题:

1.按条件“全年”统计人数与求和,

2.按“非全年”统计人数与求和

3.最后再统计合计人数与合计总和

如下明细表

要统计如下

四个方框表示四个要统计的问题

◆【Excel函数解决问题】

这里只列出所用到的关键函数

C3=SUMPRODUCT((明细表!$B$2:$B$31=统计!B3)*(明细表!$E$2:$E$31=12)*1)

D3=SUMPRODUCT((明细表!$B$2:$B$31=统计!B3)*(明细表!$E$2:$E$31=12)*(明细表!$F$2:$F$31))

E3=SUMPRODUCT((明细表!$B$2:$B$31=统计!B3)*(明细表!$E$2:$E$31<12)*1)

F3=SUMPRODUCT((明细表!$B$2:$B$31=统计!B3)*(明细表!$E$2:$E$31<12)*(明细表!$F$2:$F$31))

G3= =C3 E3下拉

H3= =D3 F3下拉

C9=SUM(C3:C8)右拉

◆【pandas解决问题】

=====代码如下=====

import pandas as pd

file="D://yhd_python_home/yhd-pandas分类统计个数与和/pandas分类统计个数与和2.xlsx"

df= pd.read_excel(file)

df12=df[df['月数']==12]

df12g=df12.groupby('单位').agg({'月数':['count'],'金额':['sum']})

dfxiao12=df[df['月数']<12]

dfxiao12g=dfxiao12.groupby('单位').agg({'月数':['count'],'金额':['sum']})

df_du=df[['序号','单位']]

df_du=df_du.drop_duplicates(['单位'])

df_final=pd.merge(df_du,df12g,on='单位',how='left')

df_final=pd.merge(df_final,dfxiao12g,on='单位',how='left')

df_final=df_final.fillna(value=0)

new_col=['序号','单位','全年人数','全年金额小计','非全年人数','非全年金额小计']

df_final.columns = new_col

df_final['合计人数']=df_final['全年人数'] df_final['非全年人数']

df_final['合计金额']=df_final['全年金额小计'] df_final['非全年金额小计']

df_final.loc['Row_sum'] = df_final.apply(lambda x: x.sum(),axis=0)

file_out="D://yhd_python_home/yhd-pandas分类统计个数与和/pandas分类统计个数与和2_out.xlsx"

df_final.to_excel(file_out)

=====代码end=====

步骤1:读入数据

步骤2:读出条件“全年”(月数==12)的数据,并分组groupby再用agg不再的数据列用不同的统计方式

步骤3:读出条件“非全年”(月数<12)的数据,并分组groupby再用agg不再的数据列用不同的统计方式

步骤4:读出列“单位”并去重

步骤5:把,“单位”数据,“全年”数据,“非全年”数据进行合并拼接,再计算两合计,再输出为excel文件

 ===完成===

0 人点赞