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文件
===完成===