开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:Pandas 基础2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15381
Pandas 基础2
内容介绍
一、copping Entries from an Axis (按轴删除记录)
二、Indexing,Selection,and Filtering(索引,选择,过滤)
一、copping Entries from an Axis (按轴删除记录)
对于series , drop 会返回一个新的 object ,并删去你指定的 axis 的值:
第二个常用的功能是删除记录,可以按照坐标轴来删除记录。
对于 series , drop 会返回一个新的 object ,并删去你指定的 axis 的值:
In [14]: obj = pd . Series ( np arange (5.), index =[' a ',' b ',’ c ',’ d ',‘e’])
Out [14]: a 0.0
b1.0
c 2.0
d 3.0
e 4.0
dtype :float64
In [15]: new _ obj = obj . dropp ’)
new _ obj
Out [15]: a 0.0
b 1.0
d 3.0
e 4.0
dtype :float64
先创建一个0-4的Serious缩影,abcde结果零到abcde左边一列就是缩影。然后删除drop函数删除c这一行。
c这行删掉了,引号里面挤的是个索引,按照索引来删除也是按行来删除。
In [15]: obj . drop ([ Id ',' c '])
Out [15]: a 0.0
b 1.0
e 4.0
dtype :float64
这个例子来删除,同时可以给第几行的缩影,删除D和C,完成以后就剩下了abe。
他是Range十六个数据,改成四行四列四行四列,他的行的缩影是Index。列的名字缩影是one two three four创建一下,然后可以指定行和列来删除。行的处理可以给一个行的标签序列。
对于 DataFrame , index 能按行或列的 axis 来删除:
[16]: data = pd . DataFrame (nр. arange (16). reshape (4,4),
index =[' Ohio ,’ Colorado ’,' Utah ’,’ New York ’],
columns =[' one ',’ two ',’ three ',’ four ’])
行处理:如果a sequence of lables(一个标签序列)来调用drop,会删去row lables(axis0)
列处理:drop列的话,设定axis=1或axis=‘columns’
drop行的一个,放在列表里面是个序列,一批一起删除。列出来的时候也是一样的,可以指明是这个坐标等于1。Axis等于1是列,axis等于Columns,这里来删除。
按列来删除,然后只剩下one three four。
然后也可以用axis等于Columns来删除。注意可以不返回一个新的Object。而是直接更改原来的Serious或者是带From,就要设一个in place的参数。
二、Indexing,Selection,and Filtering(索引,选择,过滤)
series indexing ( obj […])相当于 numpy 的 array indexing ,而且除了整数,还可以使用 series 的 index :
In [21]: obj = pd . Series (nр. arange (4.), index =[' a ',' b ,' c ’,’ d '])
obj
Out [21]: a 0.0
b1.0
c 2.0
d 3.0
dtype :float64
In [22]: obj [' b ]
Out [22]:1.0
In [23]:obj [1]
In [24]: obj [1]
Out [24]:1.0
In [24]:obj [2:4]
Out [24]: c 2.0
d 3.0
dtype :float64
In [25]:#选中行
obj [['ы,' a ',' d ']
Out [25]: b 1.0
a 0.0
d 3.0
dtype :float64
In [26]:#选中行 I
obj [Г b ,' a ,' d ']]
Out [26]: b 1.0
a 0.0
d 3.0
dtype :float64
In [26]:obj [[1,3]] ]#选列表中的两个元素
Out [26]: b 1.0
d 3.0
dtype :float64
In [27]: obj [ obj く2]
Out [27]: a 0.0
b 1.0
dtype :float64
用 label 来 slicing (切片)的时候,和 python 的切片不一样的在于,会包括尾节点:
In [28]: obj [' b ':' c ']
Out [28]: b 1.0
c 2.0
dtype :float64
可以直接给选中的lable更改值
In [29]: obj [' b ':' c ]=5#包括标签 c
obj
Out [29]:a 0.0
b 5.0
c 5.0
d 3.0
dtype :float64
而对于 DataFrame , indexing 可以通过一个值或序列,选中一个以上的列:
In [30]: data = pd . DataFrame (nр. arange (16). reshape ((4,4)),
index =[' Ohio ',' Colorado ’,' Utah ’,' New York ’],
columns =[' one ',’ two ',’ three ',’ four ’])
Data
In [33]: data[' two ’]
Out [33]: Ohio 1
Colorado 5
Utah 9
New York 13
Name : two , dtype :int32
dataframe 的 indexing 有一些比较特别的方式。比如通过布尔数组:
行选择的语法格式 data [:2]是很方便的。给[]里传入一个 list 的话,可以选择列。
另一种方法是用 boolean dataframe
Selection with loc and iloc (用 loc 和 iloc 来选择)
对于 label - indexing on rows ,我们介绍特别的索引符, loc and iloc .这两个方法能通过 axis labels ( loc )或 integer ( iloc ),来选择行或列。
一个列子,选中一行多列 by label :
先创建一个Serious是0-4,索引是abcd。然后来取用一下索引,就是找某一个元素,Object括号里面放个B,找B这个元素按照索引查找。如果指定这个顺序那么第一行是0,第二行是1。那么也可以找到这条记录。也就是说索引、选择、过滤主要是地主功能。找第二行到第四行,不包括第四行,第二行第三行,和以前学过的列表或者是lables里面的切片基本上是相似功能。
选中行的话,在列表里面指定几个行的索引选中几行。选中里面的元素,第一个和第三个元素。前面用索引这里用他的相对位置,还可以做一些过滤做条件筛选。
Object小于二还可以用lable来进行切片。切片用lable就是用索引标签切片包括了结尾节点,如果用这个顺序它不包括二到四。可以直接给选中的这个lable更改值,比如B和C把它值改成五。对于数据框索引可以通过一个值或者一个序列。创建一个数据框,然后指定一列。它显示整个一列的内容。可以指定给定一个值也可以给定一组值,这一组值放在一起就是一个列表,也就是给定一个序列,同时可以筛选这列的索引。
数据框indexing还有一些比较特别的方式,可以通过布尔数组来操作,选第零条和第一条数据。这里面data是大于五的。最终的结果他执行完了是一个布尔值就是True和False,然后用这个True和False筛选。
行选择的语法格式冒号二很方便。中括号里面传一个list可以选择列。
另一种就是布尔的这个数据框,data小于五的话结果就是一个布尔的数据框的值就是布尔型的true和false。Data小于五的话,让它等于零把那个小于五的那些什么元素改成0。这都是数据框强大的操作。选择记录的时候可以用loc或者iloc来判断,loc一般适用于索引的标签的就是这种字符型的。
用Location来查找,它后面跟着的往往都是一个字符型的这样的这个索引或者标签。找到这一列里面的这两行。开始主要是数字的。还有Location找的是这样一个位置逗号,它的左边相当于是行,右边是列。
Index函数也能用于切片。不管他是单个的这个标签或者是一个列表的标签。它里面的筛选的条件就是data里面的Three是大于五。
思考题
pandas 中有很多用于选择和重新选择数据的方法,请查资料还有哪些?
注意:当设计 padnas 的时候,作者发现 frame [;, col 这样的语法是比较冗长的,因为这是会被经常用到的一个功能。作者把一些
indexing 的功能( lable or integer )集成在了 ix 这个方法上。实际中,因为这种 label 和 integer 都可以用的方式很方便,于是 pandas team 设计了 loc 和 ilco 来实现 label - based 和 integer - based indexing .
虽然 ix indexing 依然存在,但是已经过时,不推荐使用。