02 Pandas中的基本数据类型
Pandas作为一个数据分析的专业工具,当然最核心的作用就是操作数据了。所以,我们在学习之前,一定要了解Pandas究竟能操作哪些类型的数据。从学习的角度来看,我们只需要掌握Pandas中最核心的两类数据类型:Series和Dataframe。
Series大家可以看成是一个一维数组,跟咱们在Python中使用的列表差不多,但跟列表还是有一定的区别的。一个明显的区别就是,Series中的每个元素除了有位置索引外,还有一个标签,我们除了使用元素的位置索引能够定位到一个元素,还能通过标签来定位到Series中的元素。从这个角度来看,Series是比列表更灵活的,这种设计的初衷是更适合于我们数据分析中的应用。
接下来,我们通过例子来说明。首先来看看Python中的列表
mylist = ['张三', '李四', '王五']
# 张三的index固定是0,mylist[0]# 李四是1,mylist[1]
# 王五是2,mylist[2]# 我们可以利用index来定位到列表中任何一个元素
这个很简单,很多童鞋应该都很熟悉,就不多说了。我们重点来看看Pandas中的Series。Series长下面这样:
import pandas as pdser = pd.Series(['张三', '李四', '王五']) # 生成一个series对象print(ser)
运行这段代码,结果长这样:

从上面打印出来的结果可以看到,Series对象打印出来会显示两列,左边的那列0,1,2就是Series中的index,也叫元素标签,跟右边的元素一一对应。右边显示的张三、李四、王五就是Series中的value,也就是元素的值。在默认情况下,如果你没有明确给Series中的元素指定对应的标签,Pandas就会将元素的位置索引作为元素的标签。
当然,我们也可以手工指定各个元素的标签是什么,比如下面这个例子,我们将默认的0,1,2这三个标签换成了one,two,three这三个标签了:
import pandas as pdser = pd.Series(['张三', '李四', '王五'])# 修改series元素标签ser.index = ['one', 'two', 'three'] print(ser)
这个时候,ser打印出来是长这个样子:

大家可以看到,标签的值改变了。标签的值可以随意改,这在数据分析中是有意义的,因为很多时候,我们在分析不同维度的数据时,需要用不同的标签去标识这个数据的意义,让我们在做数据分析时更加方便,而不像传统的Python列表中,只需要用位置索引来获取元素。同样的,在获取Series中的元素的时候,我们既可以按照传统的列表的位置索引方式来获取特定的元素,也可以按照标签的形式来获取Series中的元素。代码如下:
import pandas as pdser = pd.Series(['张三', '李四', '王五'])# 修改series元素标签ser.index = ['one', 'two', 'three'] # 通过元素位置坐标来获取元素print(ser[0])
# 打印张三# 通过元素标签来获取元素print(ser['two']) # 打印李四
接下来再看看Dataframe这种数据类型。Dataframe是一种比Series更常用的数据类型,因为它是一种模仿表格的二维数组结构,由行数据和列数据组成,对应的也有行标签和列标签。比如一个典型的Dataframe长下面这个样子:

熟悉数据库的童鞋应该都知道,这就是典型的表结构。我们也可以修改行标签和列标签的值,并且在获取元素时也可以根据标签和位置来进行获取,后面的系列文章中将详细为大家进行讲解。
好了,本文是Pandas应该这样学的第一篇,主要内容比较简单,主要给大家讲了下Pandas中两种最重要的数据结构Series和Dataframe。它们两者的区别大家一定要搞清楚,一个是一维的,一个是二维的。虽然Dataframe中也有多维数据结构,比如在有多级索引时,但这种是比较特殊的情况,后面我们遇到之后再说。目前,大家记住这些就足够了,我们的内容还很多,我们下一篇再见。