微信公众号: python数据科学家
【要点抢先看】
1.对列标签进行字典形式的取值访问,获取Series对象
2.使用字典语法进行列的扩充
3.使用values属性,获取ndarray二维数组类型,可以使用相同操作方法
4.loc、iloc、ix三种索引器,支持行和列的索引、分片灵活操作
5.DataFrame的条件过滤操作
6.DataFrame具体值的修改
这一集,我们来说DataFrame对象的数据选取方法。同样,我们使用类比法进行学习,前面我们提到过,DataFrame可以看作是若干Series对象构成的字典,也可以看做是一个二维数组。
我们先类比字典,讨论如何获取DataFrame的指定数据,我们这一集例子中操作的就是下面这个DataFrame数据对象。
import pandas as pd
area = pd.Series({'California':423967,'Texas':695662,
'New York':141297,'Floriade':170312,
'Illinois':149995})
pop = pd.Series({'California':38332521,'Texas':26448193,
'New York':19651127,'Floriade':19552860,
'Illinois':12882135})
data = pd.DataFrame({'area':area, 'pop':pop})
print(data)
area pop
California 423967 38332521
Floriade 170312 19552860
Illinois 149995 12882135
New York 141297 19651127
Texas 695662 26448193
由于DataFrame本质上反应的是列标签与Series的映射关系,所以对列名进行字典形式的取值,可以获取相应的Series列数据:
data = pd.DataFrame({'area':area, 'pop':pop})
print(data['area'])
California 423967
Floriade 170312
Illinois 149995
New York 141297
Texas 695662
Name: area, dtype: int64
和这种字典形式访问效果相同的是属性形式的访问方法,即data.area得到的结果和本例相同,不过属性访问方式的限制要多一些,例如如果列标签不是纯字符串或者恰巧与一些方法名重名,则不能使用该方法。
当然,我们同样可以使用字典形式的语法进行列扩充,可以给一个新列赋值一个标量,也可以对其赋值一个向量数组:
data = pd.DataFrame({'area':area, 'pop':pop})
data['a'] = [1,2,3,4,5]
data