来源:大话数据分析

在日常做数据日报时,日报的数据指标需要根据特定的条件进行计数和求和,需要使用大量的Excel函数,比如普通计数COUNT,普通求和SUM,条件计数COUNTIF,条件求和SUMIF等。

本文借助Python对比Excel中多条件计数和求和的用法,轻松实现实现Python中的多条件计数和求和,相较而言,Python的语法更加清晰,多条件计数和求和的用法更加鲜明,下面一起来学习。

示例工具:anconda3.7、office2016

本文讲解内容:多条件计数、求和

适用范围:用Python多条件计数、求和

数据获取

本案例数据如下,其中包含用户ID、日期、城市等6个字段,需要对这些数据字段根据特有的条件进行计数和求和。

dd553a365d8922650483fee384587d8f.png

普通计数/Excel

计算用户数,使用COUNT函数,得出用户数是10个。

=COUNT(A2:A11)

计算城市列非空单元格个数,使用COUNTA函数,将非空的数值剔除,得出非空的城市为6个。

=COUNTA(C2:C11)

计算城市列空单元格个数,使用COUNTBLANK函数,只计入单元格为空的数,得出空单元格数是4个。

=COUNTBLANK(C2:C11)

普通计数/Python

导入第一个sheet表的数据。

import pandas as pd
df1=pd.read_excel(r'D:\系统桌面(勿删)\Desktop\多条件计数与求和.xlsx',sheet_name='COUNT&COUNTA&COUNTBLANK',usecols='A:F')
df1

88e48ff2f82a87d863ba5306e1fa9848.png

计算用户数可以在用户ID这一列进行计数,得出用户数为10。

#计算用户数
df1['用户ID'].count()

Python中的count函数默认是计入非空值,所以要求非空单元格数直接使用count函数即可,得出非空的城市为6个。

#计算城市列非空单元格个数
df1['城市'].count()

要计算空的单元格数,首先用isnull函数返回布尔值,然后用sum函数求和即可,得出城市列空单元格数是4个。

#计算城市列空单元格个数
df1['城市'].isnull().sum()

条件计数/Excel

计算不同性别的客户数,使用COUNTIF函数,添加计入的条件进行运算,得出女性客户数是5,男性客户数是5。

=COUNTIF($E$2:$E$11,"F")
=COUNTIF($E$2:$E$11,"M")

计算北京女性的客户数,需要满足两个条件,一个是城市列属于北京,另一个是性别是"F",两个条件同时满足,得出北京女性的客户数为3。

=COUNTIFS(C2:C11,"北京",E2:E11,"F")

『条件计数/Python

导入第二个sheet表的数据。

df2=pd.read_excel(r'D:\系统桌面(勿删)\Desktop\多条件计数与求和.xlsx',sheet_name='COUNTIF&COUNTIFS',usecols='A:F')
df2

7b325dd99798a02036dc2d76d0dbfc3a.png

要计算不同性别的客户数使用value_counts函数,既可以分组,也可以计算,得出女性客户数是5,男性客户数是5。

#计算不同性别的客户数
df2['性别'].value_counts()

要计算北京女性的客户数需要筛选出城市是"北京"且性别是"F"的用户ID,进行计数即可,得出北京女性的客户数为3。

#计算北京女性的客户数
df2[(df2['城市']=='北京')&(df2['性别']=='F')]['用户ID'].count()

条件求和/Excel

销售额求和,使用sum函数,得出销售额为37810。

=SUM(F2:F11)

北京的销售额求和,求和城市里满足是北京市的销售额,得出销售额为10828。

=SUMIF(C2:C11,"北京",F2:F11)

北京的销售额求和且满足年龄小于30岁,添加两个条件,一个是城市里是北京市,另一个是年龄小于30岁,得出销售额为3200。

=SUMIFS(F2:F11,C2:C11,"北京",D2:D11,"<30")

条件求和/Python

导入第三个sheet表的数据。

df3=pd.read_excel(r'D:\系统桌面(勿删)\Desktop\多条件计数与求和.xlsx',sheet_name='SUM&SUMIF&SUMIFS',usecols='A:F')
df3

771d6858137f27acbdd5a3864416c9c7.png

对销售额这一列使用sum函数求和,得出销售额为37810。

#销售额求和
df3['销售额'].sum()

筛选城市这一列满足北京市的列对销售额求和,得出销售额为10828。

#北京的销售额求和
df3[df3['城市']=='北京']['销售额'].sum()

筛选特定的数据,需要满足两个条件,城市列属于"北京"且年龄小于30,对销售额这一列进行求和,得出销售额为3200。

#北京的销售额求和,且满足年龄小于30岁
df3[(df3['城市']=='北京')&(df3['年龄']<30)]['销售额'].sum()

以上为多条件计数和求和在Python中的用法,熟练掌握Python的用法,可以解放双手,使用代码完成Excel复杂的多条件计数、多条件求和,提高运算效率和工作效率。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐