相关文章推荐
强悍的牙膏  ·  一束光的中国力量- 求是网·  7 月前    · 
强健的鸭蛋  ·  破除国企岗位“世袭制”是公私两利之举--评论 ...·  8 月前    · 
有腹肌的充值卡  ·  孕期如何摆脱斑困扰--健康·生活--人民网·  8 月前    · 
腹黑的企鹅  ·  秦钟的醒悟·  2 年前    · 
知识渊博的冰棍  ·  角仓英里子- 萌娘百科万物皆可萌的百科全书·  2 年前    · 
小百科  ›  在Pandas中实现Excel的SUMIF和COUNTIF函数功能开发者社区
电子表格 countif函数 sumif pandas
高大的电影票
2 年前
作者头像
fanjy
0 篇文章

在Pandas中实现Excel的SUMIF和COUNTIF函数功能

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 完美Excel > 在Pandas中实现Excel的SUMIF和COUNTIF函数功能

在Pandas中实现Excel的SUMIF和COUNTIF函数功能

作者头像
fanjy
发布 于 2022-04-13 13:29:53
4.1K 0
发布 于 2022-04-13 13:29:53
举报

标签: Python与Excel协同,pandas

本文介绍如何使用Python pandas库实现Excel中的SUMIF函数和COUNTIF函数功能。

SUMIF可能是Excel中最常用的函数之一。顾名思义,该函数对满足特定条件的数字相加。

示例数据集

本文使用从Kaggle找到的一个有趣的数据集。它包含纽约警方2016年收到的与“喧闹音乐/派对”相关的噪音投诉电话,让我们来看看在纽约哪里玩得开心。

为了方便起见,已经将数据集上传到Github上,你可以直接用pandas读取文件。

装载该数据集:

import pandas as pd

df =pd.read_csv('https://raw.githubusercontent.com/pythoninoffice/pandas_sumif_tut/main/modified_bar_locations.csv')

图1:读取数据到pandas

数据集和标签非常简单,这里不再解释。

pandas中的SUMIF

使用布尔索引

要查找Manhattan区的电话总数。布尔索引是pandas中非常常见的技术。本质上,它对数据框架应用筛选,只选择符合条件的记录。例如,如果想要Manhattan区的所有记录:

df[df['Borough']=='MANHATTAN']

图2:使用pandas布尔索引选择行

在整个数据集中,看到来自Manhattan的1076条记录。

在df[]中,这个表达式df['Borough']=='MANHATTAN'返回一个完整的True值或False值列表(2440个条目),因此命名为“布尔索引”。一旦将这个布尔索引传递到df[]中,只有具有True值的记录才会返回。这就是上图2中获得1076个条目的原因。

图3:Python pandas布尔索引

使用已筛选的数据框架,可以选择num_calls列并计算总和sum()。

df[df['Borough']=='MANHATTAN']['num_calls'].sum()

图4

如果想了解纽约所有5个行政区的投诉电话数量,该怎么办?可以使用上面的方法循环五个行政区的名称,然后逐个计算,但这有点低效。

使用groupby()方法

pandas库有一个groupby()方法,允许对组进行简单的操作(例如求和)。要使用此函数,需要提供组名、数据列和要执行的操作。在示例中:

  • 组: Borough列
  • 数据列:num_calls列
  • 操作:sum()

df.groupby('Borough')['num_calls'].sum()

图5:pandas groupby函数

这样,我们发现,住在Manhattan的人拨打了39926个投诉电话来获得最大的乐趣。“未指定”类别可能是由于缺少一些数据,这里不重点讨论这些数据。

Pandas中的SUMIFS

SUMIFS是另一个在Excel中经常使用的函数,允许在执行求和计算时使用多个条件。

这一次,将通过组合Borough和Location列来精确定位搜索。注:位置类型列中的数据是为演示目的随机生成的。

使用布尔索引

看看有多少投诉是针对Manhattan区和位置类型“Store/Commercial”。

目前我们已经熟悉了布尔索引,下面的内容应该很简单。本质上是使用按位与运算符&将两个条件结合起来。注意,这两个条件周围的括号是必不可少的。

图6

与只传递1个条件Borough==‘Manhattan’的SUMIF示例类似,在SUMIFS中,传递多个条件(根据需要)。在这个示例中,只需要两个。

使用groupby()方法

如果对所有的Borough和LocationType组合感兴趣,仍将使用groupby()方法,而不是循环遍历所有可能的组合。只需将列名列表传递给groupby函数。

df.groupby(['Borough','LocationType'])['num_calls'].sum()

图7

Pandas中的COUNTIF,COUNTIFS和其它

现在,已经掌握了pandas中的SUMIF和SUMIFS,要进行COUNTIF,只需要将sum()操作替换为count()操作。

事实上,如果将上述示例中的sum()替换为:

  • mean()——将提供AVERAGEIF(S)
  • max()——将提供MAXIFS
  • min()——将提供MINIFS
  • median()——将提供MEDIANIF(S),虽然这个函数在Excel中不存在
  • mode()——将提供MODEIF(S),虽然这个函数在Excel中不存在

小结

Python和pandas是多才多艺的。虽然pandas中没有SUMIF函数,但只要我们了解这些值是如何计算的,就可以自己复制/创建相同功能的公式。

本文参与 腾讯云自媒体分享计划 ,分享自微信公众号。
原始发表:2022-03-08 ,如有侵权请联系 [email protected] 删除
python

本文分享自 完美Excel 微信公众号, 前往查看

如有侵权,请联系 [email protected] 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

python
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
fanjy
0
文章
0
累计阅读量
0
获赞
前往专栏
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
强悍的牙膏  ·  一束光的中国力量- 求是网
7 月前
强健的鸭蛋  ·  破除国企岗位“世袭制”是公私两利之举--评论-人民网
8 月前
有腹肌的充值卡  ·  孕期如何摆脱斑困扰--健康·生活--人民网
8 月前
腹黑的企鹅  ·  秦钟的醒悟
2 年前
知识渊博的冰棍  ·  角仓英里子- 萌娘百科万物皆可萌的百科全书
2 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南