数据表、排序、极值与排名

本文继续讨论数据整理,并从中观察数据的正确性和合理性。本文测试数据使用的文件为“测试数据1.xlsx”,下载地址http://caohuayu.com/res/Res.aspx?id=res20251201。

数据表与工作表区域

上一篇文章中,将CSV数据导入Excel2021时会自动转换为数据表格式,这是一个抽象概念,表示工作表中一个二维结构的数据区域,同时会有一些便于数据操作的特性;而数据表和工作表区域也可以相互转换。

假如我们获取了一个包含了标题等信息的表格,但是只需要其中的二维表结构的数据部分,就可以选中数据区域或选中数据区域中的一个单元格,然后通过“插入”选项卡>>“表格”组>>“表格”按钮将选中区域转换为数据表,在弹出的确认窗口中会自动识别数据区域,确认无误后点击“确定”按钮完成转换。

数据表转换确认

转换后的数据格式如下图所示,可以看到表格添加了一些样式,如列名行背景使用较深的颜色,每个列名后多了一个用于筛选操作的向下箭头按钮(下一篇文章将讨论数据的筛选);数据行使用了交替的背景颜色。此外,还会自动给数据表命名,如第一个表命名为“表1”。

转换为数据表

接下来,如果需要将数据表还原为工作表区域,同样先选中数据区域,然后点击“表设计”选项卡>>“工具”组>>“转换为区域”按钮;这时表格背景色和字体颜色可能没有还原,可以通过工具“开始”选项卡>>“字体”组中的按钮设置,如背景色设置为“无填充”,字体颜色设置为“自动”或黑色。操作后结果如下图所示,可以看到样式变成了默认的白底黑字。

还原工作表区域

通过记事本过滤格式

在日常工作中,数据的格式和样式设置是经常会遇到的操作,如果格式和样式设置或恢复起来比较复杂,不如重新创建一个新的工作表,然后只粘贴数据;通过Windows操作系统自带的“记事本”就可以很方便地过滤多余的格式,首先在Excel工作表中选中所需数据,然后复制(Ctrl+C)。

接下来打开记事本粘贴数据(Ctrl+V),然后在记事本中全选(Ctrl+A)并复制数据(Ctrl+C)。

最后在Excel中创建一个新的工作表准备接收数据。向Excel工作表粘贴数据之前需要注意,对于大于15位数字、有前导0等可能识别错误的数据格式,应先将列的单元格格式设置为“文本”,如示例中的f1、f2、f3列,即B、C、D列就可以先设置为“文本”格式。在新的工作表选中数据区域的左上角单元格,如A1单元格,然后粘贴数据(Ctrl+V)即可。

排序

数据排序是很常见的操作,如数字从小到大称为升序排列,从大到小称为降序排列;中文排序在不同的环境下排序规则也会有所不同,如按拼音的字母排序,按Unicode字符编码排序等。下面讨论Excel中的数据排序,我们继续使用“测试数据1.xlsx”文件进行操作。

首先来看简单的排序操作。在Excel工作表标准的二维数据结构中,需要对哪一列的数据排序,可以选中此列中的一个数据单元格,然后点击“开始”选项卡>>“编辑”组>>"排序和筛选"中的“升序”就可以对数据升序排列,同样的,点击“降序”则可以对数据降序排列。

需要注意的是,如果选中了排序的列,则会弹出如下图所示的对话框,此时应选择“扩展选定区域”,否则只会排序当前列的数据,而同一行的其它数据不会随着排列,这样就会造成数据的混乱。建议对某一列数据排序时只选中列中的一个数据单元格。

排序—扩展选定区域

下图显示了f4列升序排列后的效果(前10行数据)。

f4列升序排列

在Excel工作表中排序时,如果数据是标准的二维表结构,则可以自动识别列名行,而列名不参与排序;如果工作中发现列名行也参与排序则说明数据结构出现了问题。

使用自定义排序可以对多个列的数据进行排序,当指定排序的第一列数据相同时按第列数据排序,第二列数据相同时按第数据排序,以此类推。下图中有三列数据,接下来会对此数据进行排序。

三列数据

下面需要对指标1降序排序,其数据相同时按指标3升序排列。首先选中工作表中的一个数据单元格,然后通过“开始”选项卡>>“编辑”组>>"排序和筛选"中的“自定义排序”打开排序设置窗口,并按下图进行设置。

自定义排序

排序条件设置中,可以通过顶部的“添加条件”添加新的排序条件,而点击“删除条件”时会从最下面的条件开始删除。排序条件设置完成后点击“确定”,排列结果如下图所示。

双列数据排序

极值(最大值和最小值)

数据排序在数据整理和数据分析中有什么作用呢?

通过排序可以很清晰地看到某一指标的最大值和最小值,然后可以根据指标的特点对最大值和最小值进行判断,看它们是否为合理的、正确的数据。如测试数据1中的身份证号码里就有一个彩蛋。首先在身份证号码的后面添加一列,然后可以使用多种方法提取其中的年份,如第2行使用公式“=MID(D2,7,4)”,然后向下复制公式并添加列名“出生年份”,结果如下图所示。

提取出生年份

然后对出生年份升序排列,可以看到最小值是1975,那么问题来了,其他记录的出生年份是1995到1999,而1975明显不在这个区间,那么1975这个记录是不是有问题呢?

判断一个数据是否有问题时必须从数据产生的场景出发。比如,如果这是一个班的学生信息,年龄相差过大明显是不合理的;如果这是一个班参加活动的出行人员信息,其中包含了带队老师,那么这个1975的记录很可能就是老师的;所以,一个数据的合理性和正确性必须根据数据产生的场景来判断,而不是只看它的大小。

实际应用中,数据集合中的最大值和最小值如果明显不合理,或者是要减少它们对集合指标的影响,有时会去掉最大值和最小值的数据然后进行计算和分析;如裁判打分时去掉一个最高分和一个最低分就是很典型的应用。

查看数据集合时,除了观察最大值和最小值,还有很多指标可以参考,如最大值减最小值的结果是极差,又称为全距,可以反映出集合中的数据有多分散。当然,对于集合数据的分析指标还有很多,如平均数、方差、标准差等;可以根据这些指标综合判断集合数据有多么分散或者有多么集中。后续文章会讨论更多分析方法。

排名

前面的文章已经演示了如何使用RANK()函数进行排名,这里我们再讨论一下关于排名的本质。

排名实际反映了某一指标的顺序,有时,某一指标数据相同时还可能需要第二指标进行排名,如果不考虑并列排名的情况,直接对数据进行排序即可得到数据的排名。如下图所示,需要按指标2从大到小进行排名,直接对指标2进行降序排列即可,此时的排列的顺序就是其排名。

按指标2排名

可以看到指标2有很多相同的数据,数据相同而名次不同在很多情况下是有问题的,此时可以考虑在指标2数据相同时再按指标3进行排序,如下图所示。

按指标2、指标3排名

如果相同的数据需要并列排名就应该使用RANK()函数了,如还按指标2从高到低排名,首先在D2单元格使用公式“=RANK(B2,$B$2:$B$9,0)”,然后向下复制公式,排名结果如下图所示。

使用RANK()函数排名

使用RANK()函数排名时需要注意以下几点:

  • 排名的指标数据不需要事先排序。
  • 参数2中指定的排名数据区域应使用绝对地址。
  • 参数3中默认使用数据的降序进行排名,设置为0或FALSE有同样的效果;如果按数据从小到大排名,则应设置为非0数据或TRUE值,如下图显示了按指标2升序进行排名的结果。
按指标2升序排名

按照某一指标数据进行排名时要根据实际应用场景充分考虑是单指标排名还是多指标排名,是从小到大排名还是从大到小排名;然后根据需要进行排序或使用RANK()函数进行操作。