pandas中的数据结构
pandas的数据结构Series和DataFream
pandas的数据结构中有两大核心,分别是Series与DataFrame。其中Series是一维数组,Series可以保存多种数据类型的数据,如布尔值、字符串、数字类型等。DataFrame是一种二维的表格形式的数据结构,类似于Excel表格。
Series
Series对象
创建Series对象
在创建Series对象时,只需要将数组形式的数据传入Series对象的构造函数Series()中即可。如下所示:
import pandas as pd #导入pandas模块,并将pandas模块命名为pd data = ["A","B","C","D"]#创建数组形式的数据data s = pd.Series(data) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。 print(s)#打印Series对象内容
【运行结果】
【说明】上述运行结果中,左侧的数字0-3列为索引,右侧的字母A-D列为索引对应的元素。Series对象在没有指定索引时,将默认生成从0开始依次递增的索引值。
在创建Series对象时,是可以人为指定索引项的,例如指定索引项为a、b、c、d。示例代码如下:import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 = ["a","b","c","d"]#自定义索引 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引列index00赋值给index属性。 print(s)#打印Series对象内容
【运行结果】
获取Series对象中的数据
获取Series对象中的索引数组和元素数组
在访问Series对象中的数据时,可以单独访问索引数组或者是元素数组。
没有自定义索引项的时候,分别打印索引数组和数组元素的结果如下import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data s = pd.Series(data) #调用pandas模块中Series对象的构造方法Series()创建>Series对象,并将data传入。 print("索引数组为:",s.index)#打印Series对象的索引数组 print("元素数组为:",s.values)#打印Series对象的元素数组
【运行结果】
【说明】
打印出的索引数组显示为:RangeIndex(start=0, stop=4, step=1)
意思是:范围索引(从0开始,以4为止,步长为1)
即:0,1,2,3,4。
自定义索引项的时候,分别打印索引数组和元素数组的结果如下import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 = ["a","b","c","d"]#自定义索引项 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引项index00赋值给index属性。 print("索引数组为:",s.index)#打印Series对象的索引数组 print("元素数组为:",s.values)#打印Series对象的元素数组
【运行结果】
获取指定索引所对应的数组元素
如果需要获取指定索引值的数组元素,可以直接通过
Series对象[下标]或者Series对象["索引值"]
的方式进行数组对象的获取。
没有自定义索引项的情况下,下标默认从0开始。import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data s = pd.Series(data) #调用pandas模块中Series对象的构造方法Series()创建>Series对象,并将data传入。 print("下标为0的数组元素为:",s[0])#打印下标为0对应的数组元素 print("下标为3的数组元素为:",s[3])#打印下标为3对应的数组元素
【运行结果】
自定义索引项的情况下获取数组元素,根据自定义的索引值自由获取。import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 =["a","b","c","d"]#自定义索引项 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引列index00赋值给index属性。 print("索引值为a的数组元素为:",s["a"])#打印索引值为a对应的数组元素 print("索引值为d的数组元素为:",s["d"])#打印索引值为d对应的数组元素
【运行结果】
获取多个索引值所对应的数组元素
1、如果需要获取多个索引值对应的数组元素时,可以指定下标范围。
import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 =["a","b","c","d"]#自定义索引项 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引列index00赋值给index属性。 print("通过指定下标范围打印索引值为b到c的数组元素为:\n",s[1:2])#通过指定下标范围打印索引值b到c所对应的数组元素
【运行结果】
2、如果需要获取多个索引值对应的数组元素时,可以通过指定多个索引的方式获取。Series对象[["索引值m","索引值n",...]]
import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 =["a","b","c","d"]#自定义索引 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引列index00赋值给index属性。 print("索引值为b、a、d的数组元素分别为:\n",s[["b","a","d"]])#打印索引值为b、a、d分别对应的数组元素。
【运行结果】
修改元素值
在修在Series对象的元素值时,同样可以通过指定下标或者指定索引的方式来实现。
Series对象[下标]=值 或 Series对象["索引值"]=值
import pandas as pd #导入pandas模块 data = ["A","B","C","D"]#创建数组形式的数据data index00 =["a","b","c","d"]#自定义索引值 s = pd.Series(data,index=index00) #调用pandas模块中Series对象的构造方法Series()创建Series对象,并将data传入。将提前指定好的索引列index00赋值给index属性。 s[0]="E" #将下标为0的元素值修改为E print("将下标为0的元素值修改为E:\n",s) s["b"]="F" #将索引值为b的元素值修改为F print("将索引值为b的元素值修改为F:\n",s)
【运行结果】
DataFrame
DataFrame对象
创建DataFrame对象
在创建DataFrame对象时,需要通过字典来实现DataFrame对象的创建。将字典形式的数据传入DataFrame对象的构造函数DataFrame()中即可。字典形式的数据中每列的名称为键,而每个键对应的是一个数组,这个数组作为值。如下所示:
import pandas as pd #导入pandas模块 #创建字典形式的数据 data = {"A":[1,2,3], "B":[4,5,6], "C":[7,8,9],} #将数据传入DataFrame的构造方法DataFrame()中来创建DataFrame对象 data_frame = pd.DataFrame(data) #打印创建好的DataFrame对象 print(data_frame)
【运行结果】
【说明】
运行结果中左侧单独的数字列为索引,在没有指定特定的索引时,DataFrame对象默认的索引将从0开始递增。右侧A、B、C列名为键,列名下方对应的数组为值。
在创建DataFrame对象时可以单独指定索引名称,指定方式与Series对象类似。实例如下:import pandas as pd #导入pandas模块 #创建字典形式的数据 data = {"A":[1,2,3], "B":[4,5,6], "C":[7,8,9],} #自定义索引 index00 = ["e","f","g"] #将数据传入DataFrame的构造方法DataFrame()中来创建DataFrame对象。>并将自定义好的索引index00赋值给index属性 data_frame = pd.DataFrame(data,index=index00) #打印创建好的DataFrame对象 print(data_frame)
【运行结果】
**如果创建好了字典数据之后,不想让DataFrame对象中完全包含字典里的数据,可以在创建DataFrame对象时指定需要的数据的列名来创建DataFrame对象。**示例如下:import pandas as pd #导入pandas模块 #创建字典形式的数据 data = {"A":[1,2,3], "B":[4,5,6], "C":[7,8,9],} #将指定列名的数据传入DataFrame的构造方法DataFrame()中来创建>DataFrame对象。 data_frame = pd.DataFrame(data,columns=["B","C"]) #打印创建好的DataFrame对象 print(data_frame)
【运行结果】
DataFrame对象中的增、删、改、查操作
DataFrame对象是pandas模块中最常用的对象,该对象所呈现出的数据与Excel表格相似。所以在实现数据的统计与分析前需要了解如何操作DataFrame对象中的各种数据,例如数据的增、删、改、查等。
增添数据
方法:
DataFrame对象[列名] = [数据值1,数据值2,数据值3,......]
案例:创建一个DataFrame对象,并向DataFrame对象中添加一条数据。#案例:向DataFrame对象中增加数据 # 解法:1、先创建出DataFrame对象 2、按照格式向DataFrame对象中添加数据 import pandas as pd;#导入pandas数据统计模块 #1、创建DataFrame对象.(步骤:①、创建字典样式的数据(键值对.键:列名;值:数组)②、将创建>好的数据传入DataFrame对象的构造方法中,返回DataFrame对象) #①、创建字典样式的数据 data = { 'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9] } #②、将字典样式的数据传入DataFrame的构造方法DataFrame()中,返回DataFrame对象 data_fram = pd.DataFrame(data) #2、向DataFrame对象中增加数据 data_fram['D']=[10,11,12]#向DataFrame对象中增添了一条D列数据 print(data_fram)
【运行结果】
【说明】显然D列数据被添加进去了