pandas对缺失值与重复值的清洗常用函数(1)——25-06-15 第16周 第1篇
前言
上周的《pandas文件读取时的缺失值处理——25-06-08 第15周 第1篇》这篇文章中提到上周主要的学习内容是对DataFrame中缺失值与重复值的处理。这是数据清洗环节的重要步骤,在拿到需要处理的脏数据后,最重要的一个步骤便是对缺失值与重复值的识别处理。
这个部分的知识点十分重要,复杂,需要详细讲解。但限于篇幅与个人精力,本人会将这一部分的知识点拆分为多篇文章。所以建议在所有文章更新完成后再详细阅读。
数据准备
在对代码正式讲解前,让我们先创建一个简单的DataFrame对象,方便展示。
1 | |
通过以上代码,我们创建了一个简单的DataFrame对象,将其打印后的输出如下
1 | |
即下列的二维数组:
| col1 | col2 | col3 | |
|---|---|---|---|
| 0 | 15 | 0-c2 | 0-c3 |
| 1 | 15 | NaN | 1-c3 |
| 2 | 39 | 39 | NaN |
| 3 | NaN | 66 | 1-c3 |
我们接下来的演示代码都会基于这个DataFrame对象。所以如果需要进行复现,可以直接复制上面的代码。
好的,让我们现在开始吧。
数据查看
首先,我们先看一看如何读取这个DataFrame对象的各项数据
读取行列数
1 | |
输出为:
1 | |
如上所示,df.shape函数可以快速获取DataFrame对象的行数与列数,把它用在多个DataFrame对象合并前的确认是一个好选择。
读取完行数和列数后,接下来就是读取具体的索引和列名(主要是列名)
读取索引与列名
1 | |
输出如下:
1 | |
各行输出内容的具体含义如下:
1 | |
这行指的是这个DataFrame对象的索引。我们之前在创建用于举例的DataFrame对象时并没有设置索引的内容,所以pandas库会默认用RangeIndex()进行填充。RangeIndex()及其它index对象可以点击查看。
1 | |
这一行指的是DataFrame对象的列名,列名(columns)是处理数据时的重要数据,对DataFrame对象中的单个数据进行定位时,index与columns两者缺一不可。而index一般情况下默认由上面的RangeIndex填充,所以columns就是我们最重要的数据标志。
随机查看数据
1 | |
运行结果不唯一,其中一个结果如下
1 | |
这个函数很简单,就是随机抽取n行数据,没有什么需要注意的点。
查看数据首末行
1 | |
输出如下:
1 | |
这个函数也不复杂,输出头尾的n行数据。输出数据的类型同样是DataFrame,有的时候可以用于对头尾的切片处理,“从开头/末尾的……行进行如下操作”之类的题型都可以用上。
查看数据类型
1 | |
输出如下:
1 | |
这个函数的输出比较复杂,主要是对DataFrame中index与column的详细描述,我们一点点来详细说明。
1 | |
这一行表示的是df这个DataFrame对象的类型。class在python指的就是“类”这个概念。pandas.core.frame.DataFrame则是指的这个类的具体类型,即DataFrame。
然后是下面这行
1 | |
这行指的是这个DataFrame的index信息,上文“索引与列名”部分提及过RangeIndex这个类型,其中的“4,0,3”三个数据的具体含义可以通过上下文对比来简单了解。
接下来的这几行十分重要
1 | |
1 | |
这一段可以直接翻译,得到内容:数据列(共3列)。
然后是这一个列表:
1 | |
其中,
Column这一列指的是上面举例的DataFrame对象各个列的列名。Non-Null Count这一列指的是DataFrame对象中各个列有几行非空,意即存在数据。在这个DataFrame对象中,每一列都是存在3个非空数据,所以显示的内容均为3 non-null。Dtype这一列指的是DataFrame对象中各个列的对象类型。如col1与col2下属的数据都是数字,所以使用的是float64,即浮点数类型,而col3则是string字符串类型,但实际上字符串类型同时也是一种object,所以展示的才是object。
1 | |
这一行是对上面各列的类型总结,在这儿的意思是这一个DataFrame`对象总共有
- 两个浮点数类型的列
- 一个object类型(通常为string类型)的列。
1 | |
最后这行指的是内存信息,我们这个竞赛不会使用,所以不多提及。
好了,先写到这吧,还有一部分没有写的,放到下一周吧。