Excel公式如何去重分类汇总?

最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程。本篇介绍 pandas 的 Dataframe 对列 (Column) 的处理方法。示例数据请通过明哥的gitee进行下载。

 

如果列名 (column name)没有空格,则列有两种方式表达:
 
如果列名有空格,或者创建新列(即该列不存在,需要创建,第一次使用的变量),则只能用第一种表达式。
假设我们要对三个月的数据进行汇总,可以使用下面的方法。实际上就是创建一个新的数据列:
 

当然,也可以用下面的方式:
 

 

上面方法增加的列,位置都是放在最后。如果想要在指定位置插入列,要用 dataframe.insert() 方法。假设我们要在 state 列后面插入一列,这一列是 state 的简称 (abbreviation)。在 Excel 中,根据 state 来找到 state 的简称 ,一般用 VLOOKUP 函数。我们用两种方法来实现,第一种方法,简称来自 Python 的 dict。
 
如果我们想根据 dict 的 key 找到对应的值,可以使用 dict.get() 方法,这个方法在找不到 key 的时候,不会抛出异常,只是返回 None。比如
 
dict.get() 方法参数为 key,是一个标量值。我们并不能像下面这样把整列都传给这个方法,比如下面这样:
 
 
apply() 函数值得专门写一篇,暂且不细说。


方法1: 把数据放在 excel 工作表中,然后读取 Excel 文件加载。数据如下:
 
VLookup 函数根据位置来匹配,merge() 方法根据列名来匹配。因为上面语句中没有指定连接类型,不匹配的记录不会显示。如果需要将 df1 的数据全部显示出来,需要指定 merge() 方法的 how 参数:
 
 

假如需要对各个月份以及月份合计数进行求和。pandas 可以对 Series 运行 sum() 方法来计算合计:
 
 
如果想要把合计数放在数据的下方,则要稍作加工。首先通过 reindex() 函数将 df_sum 变成与 df 具有相同的列,然后再通过 append() 方法,将合计行放在数据的后面:
 

Excel 的分类汇总功能,在数据功能区,但因为分类汇总需要对数据进行排序,并且分类汇总的数据与明细数据混在一起,个人很少用到,分类汇总一般使用数据透视表。
 

函数接受的参数必须为标量值,返回的也是标量值。
 

  • index 参数: 按什么条件进行汇总
  • values 参数:对哪些数据进行计算
 
 

Pandas可以对Excel进行基础的读写操作
Pandas可以实现对Excel各表各行各列的增删改查
Pandas可以进行表中列行筛选等
到此这篇关于Python pandas对excel的操作实现示例的文章就介绍到这了,更多相关Python pandas对excel操作内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

在日常工作问题中,经常会遇到一个问题,当你呼哧呼哧处理了大半天的数据后才发现,原始数据好多重复的,导致你得到的结果全部错误……

顿时,想砍人的心都有了,心理阴影面积无穷大……

当然,胖斯基也遇到过,不过秉着吃一堑长一智的精神,后来凡是遇到数据问题处理,先检查是否有重复项,待处理完后再继续往下。

So,我们今天的主题是面对重复值,你如何处理?当然处理重复值的方法有很多,今天重点从countif函数入手,着手界面针对不同重复情况下的问题处理。

为了便于问题的逐步深入,我们先从最基本,最简单的入手。

用Excel自带功能,进行重复值的判断,如下:

上面的办法的确标记出了重复值,但是比如要判断重复几次?第几次重复?只保留唯一呢?又该如何处理?

函数COUNTIF,不陌生,其含义是:COUNTIF(rang,criteria),翻译成人话就是说:这个函数是用来统计某一个区间,满足某个条件的个数,其规范:COUNTIF(区域,条件),看着比较简单,看看它的应用。

1. 判断用户姓名是否重复

COUNTIF($A$3:$A$14,A3)很好理解,在A3:A14区间范围内查找A3,看其出现几次;利用IF增加判断,如果大于1,显然是重复。

2. 判断用户是否重复,若是重复,且非首次出现则标记为重复,否则空白

说明:COUNTIF($A$3:A3,A3)相对于问题1,有点变化,就是区间的范围发生了变化,变成了$A$3:A3,这个需要看【$】的理解了,在胖斯基看来,【$】像大头钉,钉住某个单元格,让其不动。所以$A$3:A3可以理解为,起始范围A3是固定不变的,结束范围A3是变化的,可以为A4,A5,A6…… 具体看公式的拖拽范围。

所以上述公式可以理解为,从A3开始,逐步A3:A3,A3:A4,A3:A5……等形成一个变化的增大区间,在借助其条件,来统计个数。由于是逐渐变大范围,所以一个数据如果重复,那其第1次出现,其结果为1,第2次,第3次,则逐渐为2,3,……n,所以利用IF来判断就可以解决问题。

3. 判断用户是否重复,若是重复,且非最后出现则标记为重复,否则空白

说明:COUNTIF(A3:$A$14,A3)可以理解为固定住范围区间的结尾,而范围区间的开始则是个变化值。

为了便于理解,我们将范例1-3的核心部分做一下对比,便于理解。

如果你看懂了,相信9*9乘法表,你也会了,如下:

公式略,如果想了解,请回复胖斯基

4. 名单中不重复的人数一共有几个?

5. 提取名单中不重复人的姓名

COUNTIF($B$2:B2,$A$3:$A$14)重点在这里,在B2开始的区域里面,逐渐扩大区域,在该区域中去判断A列的数据出现几次,如果为0次,则记录其行号ROW($A$3:$A$14),反之记录4^8(65536,足够大的一个数据);

再用Min函数,随着单元格的拖动来形成一个新的数组,最后借助Index来取出A列数据。

例5 是在Excel的文本去重中是比较常用的,这里简要描述,待后续详细讲解此类方法。

想要学好Excel,就从这些简单的函数开始吧!也许万事开头难,没准坚持坚持就变成大神了!

去重条件计数(excel去重统计个数)

为达成效果,花时间完全照你的重录一遍,因为你没有列标行号,故以我下图为例,在充值人数去重合计栏的G2单元格输入公式=TEXT(SUMPRODUCT(VALUE(H2:J2)),"

本问题不知是否完全理解了提问人的意图,是不是这样的?当A列数据等于D列的数弹出的对话框中选择“非重复计数”,即可得到要求的结果公式截图如下

我要回帖

更多关于 分类汇总的公式 的文章

 

随机推荐