数据科学引论-Python之道 第4课数据分析入门 一、numpy和pandas 我们主要学习两个库:numpy和pandas的使用方式。numpy是第一个库, 什么是numpy,就是python中用于科学计算的一个基础包,它的特点是运行速 度很快,支持多维数组,并且支持向量化的计算。它的使用方式像下面这样,先 要导入numpy,这个包导入以后可以起个别名np,然后就可以使用np这个别 名来调用numpy中的功能。例如,我们通过np来创建一个array,也就是一个 数组,这个数组是一个3×2的二维数组。 import numpy as np data=np.array([1.9526,-0.246,-0.8856], [0.5639,0.2379,0.9104]) data array([[1.9526,-0.246,-0.8856], [0.5639,0.2379,0.9104]]) 接下来,我们来看一看pandas这个包。我们主要讨论其中的两类对象,一 类是series,另外一类是DataFrame。pandas是什么?pandas是python中专门 用于数据分析的包,它主要的成分就是刚才讲的series和data frames。我们可 以通过这两类对象可以来下载数据可视化和分析数据。 Series是由数字构成的列表,在前面我们讲python入门时提到过列表这样 的数据类型。列表里每个元素都有自己的数据以及索引,所以在缺省情况下, series里面的索引是整数类型的,并且和列表一样从0开始的。所以我们定义一 个数据集data,它包含三个元素,再用data这个数据集来创建一个series,我 们就得到了一个pandas里面的series对象。这个对象里面的数据是连续存储的, 并且它的索引是0、1、2这样排列的。通过索引的值我们就可以访问到一个具体
数据科学引论-P瀌瀇h瀂瀁 之道 第 4 课 数据分析入门 一、瀁瀈瀀瀃瀌 和 瀃a瀁da瀆 我们主要学习两个库:瀁瀈瀀瀃瀌 和 瀃a瀁da瀆 的使用方式。瀁瀈瀀瀃瀌 是第一个库, 什么是 瀁瀈瀀瀃瀌,就是 瀃瀌瀇h瀂瀁 中用于科学计算的一个基础包,它的特点是运行速 度很快,支持多维数组,并且支持向量化的计算。它的使用方式像下面这样,先 要导入 瀁瀈瀀瀃瀌,这个包导入以后可以起个别名 瀁瀃,然后就可以使用 瀁瀃 这个别 名来调用 瀁瀈瀀瀃瀌 中的功能。例如,我们通过 瀁瀃 来创建一个 a瀅瀅a瀌,也就是一个 数组,这个数组是一个 3×2 的二维数组。 接下来,我们来看一看 瀃a瀁da瀆 这个包。我们主要讨论其中的两类对象,一 类是 瀆e瀅ie瀆,另外一类是 Da瀇aF瀅a瀀e。瀃a瀁da瀆 是什么?瀃a瀁da瀆 是 瀃瀌瀇h瀂瀁 中专门 用于数据分析的包,它主要的成分就是刚才讲的 瀆e瀅ie瀆 和 da瀇a f瀅a瀀e瀆。我们可 以通过这两类对象可以来下载数据可视化和分析数据。 Se瀅ie瀆 是由数字构成的列表,在前面我们讲 瀃瀌瀇h瀂瀁 入门时提到过列表这样 的数据类型。列表里每个元素都有自己的数据以及索引,所以在缺省情况下, 瀆e瀅ie瀆 里面的索引是整数类型的,并且和列表一样从 0 开始的。所以我们定义一 个数据集 da瀇a,它包含三个元素,再用 da瀇a 这个数据集来创建一个 瀆e瀅ie瀆,我 们就得到了一个瀃a瀁da瀆里面的瀆e瀅ie瀆对象。这个对象里面的数据是连续存储的, 并且它的索引是 0、1、2 这样排列的。通过索引的值我们就可以访问到一个具体
的对象,比如S1],就指向的是第一个23这个数据。 data=[11,23,23] s pd.Series(data) data 11 23 23 Index 0 11 23 2 23 dtype:int64 s[1]=23 s1] 23 如果我们不想使用缺省情况下从0开始的不断递增的整数类型的索引,我们 可以自己来设置series里面元素的索引。例如,在下面这段脚本中,我们仍然是 定义了三个元素构成的一个数据集,另外又定义一个由三个字符串构成的索引集。 用这个数据集以及索引集来创建一个series。.注意,这里的第一个index是关键 字,表示索引;第二个是表示的是第二行的这个index变量,表示在创建这个 series对象所使用的索引,就是我们这里定义的series这个对象。这样创建好的 series仍然包含三个元素,但是它们的索引值现在就变成了a、b、c。同样地, 通过索引值可以访问到具体的对象,例如S"a"门等于11。 data=[11,23,23] index=["a","b","c"] s pd.Series(data,index=index) data 11 23 23 Index a a 11 b 23 23 dtype:int64 s["a"]=11 s["a"] 11 除了访问一个对象之外,我们还可以访问一组对象。例如,在下面这段脚本中, 我们希望访问索引为a和b的两个对象,一次性读取出来。所以,可以在S中传 入一组索引值的方法来获取多个对象,所以S["a"门的11和S"b门的12被一次性 地获取了出来
的对象,比如 S[1],就指向的是第一个 23 这个数据。 如果我们不想使用缺省情况下从 0 开始的不断递增的整数类型的索引,我们 可以自己来设置 瀆e瀅ie瀆 里面元素的索引。例如,在下面这段脚本中,我们仍然是 定义了三个元素构成的一个数据集,另外又定义一个由三个字符串构成的索引集。 用这个数据集以及索引集来创建一个 瀆e瀅ie瀆。注意,这里的第一个 i瀁de瀋 是关键 字,表示索引;第二个是表示的是第二行的这个 i瀁de瀋 变量,表示在创建这个 瀆e瀅ie瀆 对象所使用的索引,就是我们这里定义的 瀆e瀅ie瀆 这个对象。这样创建好的 瀆e瀅ie瀆 仍然包含三个元素,但是它们的索引值现在就变成了 a、b、c。同样地, 通过索引值可以访问到具体的对象,例如 S["a"]等于 11。 除了访问一个对象之外,我们还可以访问一组对象。例如,在下面这段脚本中, 我们希望访问索引为 a 和 b 的两个对象,一次性读取出来。所以,可以在 S 中传 入一组索引值的方法来获取多个对象,所以 S["a"]的 11 和 S["b"]的 12 被一次性 地获取了出来
s["b"]=12 import pandas as pd data=11,12,131 ind■【"a","b","c"J data 11 12 13 Index a b s=pd.Series(data,index=ind) s【"a","b"1】 12 s["a"]=11 dtype:int64 DataFrame是什么呢?DataFrame是一个类似电子表格的对象,它是一个有 序的列集合,并且同时具有行和列的索引,也就是说在DataFrame的构成中,每 一列都是我们之前定义的一个series,这些列凑到一起之后,对应的行上面都还 会有一个行的索引。 列 Dictionary A 行 Index Series 1 Series 2 Series 2 具体来说,我们在这里举一个例子。首先,我们导入pandas的包,我们定 义了一个data字典,这个字典里面包含了若干个键值。这些键值对每一个都表 示的是一列。所以我们看到的电子表格里面包含了三列points、name、year。同 时,我们在创建DataFrame时,要指定行索引是什么。由于我们在前面的data 里面包含了五行,所以要指定它的五个行索引是什么,这里我们指定的是Dy1 一直到Day5。使用data和这个index构建出来的Dateframe就像下面这样, 它有列索引,又有行索引,看起来就像一个电子表格
Da瀇aF瀅a瀀e 是什么呢?Da瀇aF瀅a瀀e 是一个类似电子表格的对象,它是一个有 序的列集合,并且同时具有行和列的索引,也就是说在 Da瀇aF瀅a瀀e 的构成中,每 一列都是我们之前定义的一个 瀆e瀅ie瀆,这些列凑到一起之后,对应的行上面都还 会有一个行的索引。 具体来说,我们在这里举一个例子。首先,我们导入 瀃a瀁da瀆 的包,我们定 义了一个 da瀇a 字典,这个字典里面包含了若干个键值。这些键值对每一个都表 示的是一列。所以我们看到的电子表格里面包含了三列 瀃瀂i瀁瀇瀆、瀁a瀀e、瀌ea瀅。同 时,我们在创建 Da瀇aF瀅a瀀e 时,要指定行索引是什么。由于我们在前面的 da瀇a 里面包含了五行,所以要指定它的五个行索引是什么,这里我们指定的是 Da瀌1 一直到 Da瀌5。 使用 da瀇a 和这个 i瀁de瀋 构建出来的 Da瀇ef瀅a瀀e 就像下面这样, 它有列索引,又有行索引,看起来就像一个电子表格
import pandas as pd data =('name':['Joe','Cat','Mike','Kim','Amy'], 'year':[2012,2012,2013,2014,20141, 'Points':【4,24,31,2,3]} df pd.DataFrame(data,index =['Day1','Day2','Day3','Day4','Day5']) df Points name year Day1 4 Joe 2012 Day2 24 Cat 2012 Day3 31 Mike 2013 Day4 2 Kim 2014 Day5 3 Amy 2014 一旦定义好DataFrame就可以在上面获取它里面的内容。获取的方式是可以 在对DataFrame对象的后面填入对应的索引名字,例如,我们填入points就是 要获取points这一列的所有内容,填入name就是要获取name这一列对应的所 有内容。这就是对DataFrame的一个简单操作。 Points nameyear ·可以选择列: df['Points'] Day1 4 Joe 2012 Day2 24 Cat 2012 Day3 31 Mike 2013 Day4 2 Kim 2014 Points name year Day5 3 Amy 2014 Day1 4 Joe 2012 df['Points'] Day2 24 Cat 2012 Dayl Day2 24 Day3 3 Day3 31 Mike 2013 Day4 Day5 3 Day4 2 Kim 2014 Name:Points,dtype:int64 df['name'】 Day5 3 Amy 2014 Day1 Joe Day2 Cat Day3 Mike Day4 Kim Day5 Amy Name:name, dtype:object df['name' 二、DataFrame-分组 下面让我们来看看DataFrame的操作。在pandas的Dateframe上的操作总 共四种,一种是列举不同的取值,一种是分类,另外两种是合并和清洗
一旦定义好 Da瀇aF瀅a瀀e 就可以在上面获取它里面的内容。获取的方式是可以 在对 Da瀇aF瀅a瀀e 对象的后面填入对应的索引名字,例如,我们填入 瀃瀂i瀁瀇瀆 就是 要获取 瀃瀂i瀁瀇瀆 这一列的所有内容,填入 瀁a瀀e 就是要获取 瀁a瀀e 这一列对应的所 有内容。这就是对 Da瀇aF瀅a瀀e 的一个简单操作。 二、Da瀇aF瀅a瀀e – 分组 下面让我们来看看 Da瀇aF瀅a瀀e 的操作。在 瀃a瀁da瀆 的 Da瀇ef瀅a瀀e 上的操作总 共四种,一种是列举不同的取值,一种是分类,另外两种是合并和清洗
首先,我们来看最简单的列举不同取值。列举不同取值是通过unique函数 来实现的。所谓不同的取值,它的概念是这样的:在下面的图中,我们看到这个 是列数据有很多行,但是这一列数据当中不同的取值只有红绿蓝三种。我们想知 道在这一列上不同的取值到底有多少种,这就是unique函数的作用。 举一个例子,下面是一个DataFrame,在它的Stat_Date这一列中,我们可 以看到,尽管有七行数据,但是不同的取值实际上只有四个,我们想要取得这些 不同的数据,该怎么做呢?首先,我们通过对DataFrame传入索引列的索引的 方式获取这一列,于是我们得到了Start_Date这一列。接着,我们在这一列上调 用unique方法,就会得到不同的取值,于是,我们看到这四个不同的取值被取 回。 Start_Date name Start_Date d2002 Jason 2002 2002 df['Start Date'] 12012 Molly 2012 2012 22012 Tina 2012 2014 32014 2014 1999 Jake 42014 Amy 2014 51999 1999 John 1999 61999 Bob 接下来我们看看分组,分组是什么概念?在电子表格中,也就是在DataFrame
首先,我们来看最简单的列举不同取值。列举不同取值是通过 瀈瀁i瀄瀈e 函数 来实现的。所谓不同的取值,它的概念是这样的:在下面的图中,我们看到这个 是列数据有很多行,但是这一列数据当中不同的取值只有红绿蓝三种。我们想知 道在这一列上不同的取值到底有多少种,这就是 瀈瀁i瀄瀈e 函数的作用。 举一个例子,下面是一个 Da瀇aF瀅a瀀e,在它的 S瀇a瀅瀇_Da瀇e 这一列中,我们可 以看到,尽管有七行数据,但是不同的取值实际上只有四个,我们想要取得这些 不同的数据,该怎么做呢?首先,我们通过对 Da瀇aF瀅a瀀e 传入索引列的索引的 方式获取这一列,于是我们得到了 S瀇a瀅瀇_Da瀇e 这一列。接着,我们在这一列上调 用 瀈瀁i瀄瀈e 方法,就会得到不同的取值,于是,我们看到这四个不同的取值被取 回。 接下来我们看看分组,分组是什么概念?在电子表格中,也就是在Da瀇aF瀅a瀀e
中,这些数据按照某一列的取值可能可以划分为不同的组。例如,在这一列上, 在这个DataFrame上有6行,它的不同取值分别为A、B、C。这里的三个不同 取值分别有两行。所以,我们将数据按照某种标准划分组,然后对这些组分别进 行处理。例如,把函数分别作用到这些组上。 A A B 分组之后,我们可以将函数作用到它们之上。例如,我们要计算它们的总和 或者是平均值,这样就分别得到了每个组处理之后的结果,然后将这些结果再组 合到一起,形成了一个单一的数据结构,这就是分组操作的含义。举个例子,如 果我们想要处理多个城市的平均降雨量,那么我们就需要写这样的一个代码: import numpy as np import pandas as pd Create a Data Frame and Display CountryList-['Irag','china','USA','china','USA','Iraq','USA','USA'] B1aa=np.array([2.24,25,47.2,87,15,3.5,34,40]) df pd.DataFrame(('city':CityList ,'Country':CountryList,'RainFall 'RainNumpyArray)) df.head(8) city Country RainFall 0 Baghdad Iraq 2.24 1 Beijing China 25.00 2 New York USA 4720 3 Hong Kong China 87.00 4 Los Angeles USA 15.00 5Karbala Irag 3.50 6Chicago USA 34.00 USA 40.00 首先,我们导入numpy和pandas这两个包。其次,我们创建相应的Iist。 第一个list是CityList,.对应的是8个不同的城市;第二个Iist是CountryList,.对
中,这些数据按照某一列的取值可能可以划分为不同的组。例如,在这一列上, 在这个 Da瀇aF瀅a瀀e 上有 6 行,它的不同取值分别为 A、B、C。这里的三个不同 取值分别有两行。所以,我们将数据按照某种标准划分组,然后对这些组分别进 行处理。例如,把函数分别作用到这些组上。 分组之后,我们可以将函数作用到它们之上。例如,我们要计算它们的总和 或者是平均值,这样就分别得到了每个组处理之后的结果,然后将这些结果再组 合到一起,形成了一个单一的数据结构,这就是分组操作的含义。举个例子,如 果我们想要处理多个城市的平均降雨量,那么我们就需要写这样的一个代码: 首先,我们导入 瀁瀈瀀瀃瀌 和 瀃a瀁da瀆 这两个包。其次,我们创建相应的 濿i瀆瀇。 第一个 濿i瀆瀇 是 Ci瀇瀌Li瀆瀇,对应的是 8 个不同的城市;第二个 濿i瀆瀇 是 C瀂瀈瀁瀇瀅瀌Li瀆瀇,对
应的这些城市所属的国家。这8个城市来自于三个国家,其中2个是伊拉克的, 2个是中国的,4个是美国的。所以在CountryList中是有重复元素的。紧接着, 我们用numpy创建了一个array,这个array对应的就是这8个城市的平均降雨 量。然后,我们用这三个list作为3列创建了一个DataFrame。我们可以通过 DataFrame上的head的方法读取其前若干行的内容。 我们应该如何分组呢?实际上,我们是希望通过一个国家的主要城市的平均 降雨量来计算一个国家的平均降雨量。很显然,我们应该用国家来进行分组。我 们在DataFrame上调用groupby方法,对国家进行分组,并且在分组后在每一 组上求平均值。于是,我们就得到了下面的结果,其中中国的平均降雨量是56, 伊拉克是2.87,美国是34.05。 df.groupby(['Country'],as_index=False).mean() Country RainFall 0China 56.00 1lraq 2.87 2USA 34.05 那这个具体的操作过程是什么样子呢?首先,我们按照Country来执行分组, groupby会按照Country来进行迭代。第一个是伊拉克,它会找到其他的伊拉克 城市;然后,第二组是北京,是中国的城市,所以它会找到其他的中国城市,以 此类推,美国的四个城市被找了出来
应的这些城市所属的国家。这 8 个城市来自于三个国家,其中 2 个是伊拉克的, 2 个是中国的,4 个是美国的。所以在 C瀂瀈瀁瀇瀅瀌Li瀆瀇 中是有重复元素的。紧接着, 我们用 瀁瀈瀀瀃瀌 创建了一个 a瀅瀅a瀌,这个 a瀅瀅a瀌 对应的就是这 8 个城市的平均降雨 量。然后,我们用这三个 濿i瀆瀇 作为 3 列创建了一个 Da瀇aF瀅a瀀e。我们可以通过 Da瀇aF瀅a瀀e 上的 head 的方法读取其前若干行的内容。 我们应该如何分组呢?实际上,我们是希望通过一个国家的主要城市的平均 降雨量来计算一个国家的平均降雨量。很显然,我们应该用国家来进行分组。我 们在 Da瀇aF瀅a瀀e 上调用 g瀅瀂瀈瀃b瀌 方法,对国家进行分组,并且在分组后在每一 组上求平均值。于是,我们就得到了下面的结果,其中中国的平均降雨量是 56, 伊拉克是 2.87,美国是 34.05。 那这个具体的操作过程是什么样子呢?首先,我们按照 C瀂瀈瀁瀇瀅瀌 来执行分组, g瀅瀂瀈瀃b瀌 会按照 C瀂瀈瀁瀇瀅瀌 来进行迭代。第一个是伊拉克,它会找到其他的伊拉克 城市;然后,第二组是北京,是中国的城市,所以它会找到其他的中国城市,以 此类推,美国的四个城市被找了出来
df.groupby(['Country'],as index=False) City Country Rain Fall (inch) Baghdad Iraq 2.24 Beijing China 25 New York USA 47.2 Hong Kong China 87 Los Angeles USA 15 Karbala Iraq 3.5 Chicago USA 34 Seattle USA 40 数据分类之后,我们希望在上面求平均值,于是,会依次把每一组拿出来计 算平均值。例如,中国两个城市的平均值计算之后为56,于是,得到了最终结果 当中的第一行中国56。紧接着,计算伊拉克的平均降雨量是2.87,这个结果插 入到结果集当中的第二行中。最后是美国的四个城市的平均降雨量,计算出来之 后是34.5,这个结果被插入到结果集当中的第三行。最终,这个结果集返回给了 用户。 City Country Rain Fall (inch) Baghdad lraq 2.24 Beijing China 25 Country Mean Rain Fall New York USA 47.2 China 56 Hong Kong China 87 Irag 2.87 Los Angeles USA 15 USA 34.5 Karbala Irag 3.5 Chicago USA 34 Seattle USA 40 三、DataFrame-合并 接下来让我们看看第三种操作:合并。合并是指基于某一列将来自不同的 DataFrame的列合并起来。例如,我们现在有两个DataFrame,第一个DataFrame 包含三列A、B、C,第二个DataFrame包含三列A、D、E。它们只有一个公共 的列A,并且它们的取值都是1、2、3。我们想在A这一列上把两个不同的
数据分类之后,我们希望在上面求平均值,于是,会依次把每一组拿出来计 算平均值。例如,中国两个城市的平均值计算之后为 56,于是,得到了最终结果 当中的第一行中国 56。紧接着,计算伊拉克的平均降雨量是 2.87,这个结果插 入到结果集当中的第二行中。最后是美国的四个城市的平均降雨量,计算出来之 后是 34.5,这个结果被插入到结果集当中的第三行。最终,这个结果集返回给了 用户。 三、Da瀇aF瀅a瀀e – 合并 接下来让我们看看第三种操作:合并。合并是指基于某一列将来自不同的 Da瀇aF瀅a瀀e 的列合并起来。例如,我们现在有两个 Da瀇aF瀅a瀀e,第一个 Da瀇aF瀅a瀀e 包含三列 A、B、C,第二个 Da瀇aF瀅a瀀e 包含三列 A、D、E。它们只有一个公共 的列 A,并且它们的取值都是 1、2、3。我们想在 A 这一列上把两个不同的
DataFrame合并起来,得到一个新的DataFrame,这就是合并操作。 0 我们举一个例子,假设我们有两个DataFrame,第一个是有关学生基础信息 的,包含学生的D、姓和名,第二个包含学生的成绩信息,包含了学生的D以 及英语和数学的等第成绩。我们想把这两个DataFrame合并到一起,创建一个 新的DataFrame。.这个DataFrame包含了学生的ID、姓和名以及数学等第和英 语等第成绩。具体的操作是这样的:首先,我们需要创建第一个DataFrame。我 们创建了一个字典,这个字典里包含三个键值对,这三个键值对分别代表的是id, firstname,lastname。每一个键值对里面的值都包含三个元素,表示三个学生的 信息。然后,我们用这个字典创建了一个DataFrame,这个DataFrame的名字为 dfA。 In [1]:import pandas as pd 1m21: A ID first_name ast_name 01 John Smith 23B6 然后,我们创建第二个DataFrame.它里面也包含了三列,分别是学生的ID 数学等第和英语等第。我们同样通过一个字典来创建了这个DataFrame。这个 DataFrame名为dfB
Da瀇aF瀅a瀀e 合并起来,得到一个新的 Da瀇aF瀅a瀀e,这就是合并操作。 我们举一个例子,假设我们有两个 Da瀇aF瀅a瀀e,第一个是有关学生基础信息 的,包含学生的 ID、姓和名,第二个包含学生的成绩信息,包含了学生的 ID 以 及英语和数学的等第成绩。我们想把这两个 Da瀇aF瀅a瀀e 合并到一起,创建一个 新的 Da瀇aF瀅a瀀e。这个 Da瀇aF瀅a瀀e 包含了学生的 ID、姓和名以及数学等第和英 语等第成绩。具体的操作是这样的:首先,我们需要创建第一个 Da瀇aF瀅a瀀e。我 们创建了一个字典,这个字典里包含三个键值对,这三个键值对分别代表的是 id, fi瀅瀆瀇瀁a瀀e,濿a瀆瀇瀁a瀀e。每一个键值对里面的值都包含三个元素,表示三个学生的 信息。然后,我们用这个字典创建了一个 Da瀇aF瀅a瀀e,这个 Da瀇aF瀅a瀀e 的名字为 dfA。 然后,我们创建第二个 Da瀇aF瀅a瀀e.它里面也包含了三列,分别是学生的 ID, 数学等第和英语等第。我们同样通过一个字典来创建了这个 Da瀇aF瀅a瀀e。这个 Da瀇aF瀅a瀀e 名为 dfB
in【3]: rame (GradeData,column3 OutI3】 ID Math English 12 B 下面让我们开始合并,由于两个DataFrame上面都具有ID这一列,所以我 们实际上是要在学生D这一列上进行数据集的合并,最后合并完的结果应该是 一个DataFrame。 ID first_name last_name ID Math English 01 John Smith 0 1 A B 12 Sara E 23 Bob Aby 23B 下面这条命令就是要把DataFrame A和DataFrame B在ID这一列上进行合 并,调用的是merge,这个函数产生了新的DataFrame赋值给dfNew,所以最 终我们就会得到了这里看到的dfNew这样一个新的DataFrame。 In [4]:dfNew=pd.merge (dfA,dfB,on='ID') dfNew ID Math English 0 1 A B 12BA ID first_name last_name Math English 23 cB 01 John Smith 9 ID first_name last_name 12 Sara Eli 0 1 John 23 Bob Aby Smith 12 sara Eli 23 Bob Aby 四、DataFrame-清洗 下面让我们来看看数据清洗。数据清洗是指剔除掉数据集中不符合要求的数 据,例如,这里我们给出的两个DataFrame中,都包含由红颜色表示的不符合要 求的数据。我们希望通过删除这些不符合要求的数据行或者列,来使得清洗之后 的数据集中只包含符合要求的蓝色数据
下面让我们开始合并,由于两个 Da瀇aF瀅a瀀e 上面都具有 ID 这一列,所以我 们实际上是要在学生 ID 这一列上进行数据集的合并,最后合并完的结果应该是 一个 Da瀇aF瀅a瀀e。 下面这条命令就是要把 Da瀇aF瀅a瀀e A 和 Da瀇aF瀅a瀀e B 在 ID 这一列上进行合 并,调用的是 瀀e瀅ge,这个函数产生了新的 Da瀇aF瀅a瀀e 赋值给 dfNe瀊,所以最 终我们就会得到了这里看到的 dfNe瀊 这样一个新的 Da瀇aF瀅a瀀e。 四、Da瀇aF瀅a瀀e – 清洗 下面让我们来看看数据清洗。数据清洗是指剔除掉数据集中不符合要求的数 据,例如,这里我们给出的两个 Da瀇aF瀅a瀀e 中,都包含由红颜色表示的不符合要 求的数据。我们希望通过删除这些不符合要求的数据行或者列,来使得清洗之后 的数据集中只包含符合要求的蓝色数据