DataFrame 是pandas最常用的数据结构,类似于数据库中的表,不过DataFrame不仅仅限制于2维,可以创建多维数据表。DataFrame既有行索引,也有列索引,可以看做是Series组成的字典,每个Series看做DataFrame的一个列。
.一、DataFrame创建:
1.标准格式创建
2.等长列表组成的字典来创建
3.嵌套字典(字典的值也是字典)创建
1.标准格式创建
DataFrame创建方法有很多,
常用基本格式是:DataFrame 构造器参数:DataFrame(data=[],index=[],coloumns=[])
data是用numpy创建的二位数组,arange()是创建一维数组,reshape() 是把一维数组转换为多维数组
例如:np.arange(16).reshape(4,4) 是先生成16个数的一维数组 再转换成4行4列的二维数组。
2 用传入等长列表组成的字典来创建
先创建列表组成的字典data ,从结果来看,创建安装字典顺序排列,并且自动加上索引。
3 传入嵌套字典(字典的值也是字典)创建DataFrame
列名:嵌套字典的外层子键
索引:内层键
第一层字典的键:‘郑州’ ‘巩义’ 作为列名,他的值也是一个字典
第二层字典的键(2018,2019) 作为第一层字典的索引
二、DataFrame 增、删、改、查。
增
为不存在的列赋值会创建新列,例如在df2上增加新列c 赋值 4 5 6 增加新列d 都是1
有结果可以看出,增新列,如果行的值相同可以在直接赋值,如果行的值不同,用字典列表分别赋值。
删
用del 删除整列,例如删除d列
drop()函数删除的只是视图,其实原始数据并没有删除
例如:df2删除c列,查询df2的时候 还是有c列的
改:
通过赋值进行修改,可以通过定位到行,列,或者具体位置进行赋值修改。
修改具体的元素值,例如修改df2的c列1行对应的值5 修改成10
修改一列
修改多少行,例如修改1-2行所有数据
从结果看 :2是改变的前两行,是个范围,如果只改第一行是 df2[:1], 如果只改第2行是df2[1:2]
例如把第二行的11改成12
查
查(索引,选取,过滤)
选取数据 是DataFrame的重点,常用的有 位置切片 和 标签切片,位置切片遵循Python的切片规则,包括起始位置,但不包括结束位置;但标签切片则同时包括起始标签和结束标签。之所以如此设计是因为在使用标签切片时,通常我们不知道标签的顺序,如果不包含结束标签,很难确定结束标签的前一个标签是什么。
注释: 标准Python / Numpy表达式可以完成这些数据选择工作, 但在生产代码中, 我们推荐使用优化的pandas数据访问方法, .at, .iat, .loc, .iloc 和 .ix.
标签切片和loc选择器:
例如下图选取一列 和选多列,注意选多列时参数是个数组
使用loc,选取列:
例如选取one列 four的列,其实就是这个列的所有行
使用loc,选取行:例如选取第一行,第二行和第三行
使用loc选取一个元素
从上面的结果可以看到,loc使用标签切片,在取行的时候是取的一个范围,是从某个行以前的所有行,要是取第几行怎么办呢?
下面看看用位置切片怎么取?位置函数iloc
例如取3行之前的所有行 和单独第3行
由此也看出:loc标签切片在取范围的时候 包含开始和结束的数字,iloc位置切片在取范围的时候不包含开始数字 包含结束数字。