pandas数据结构基础
2016-06-16 11:25
387 查看
Series
Series是一种类似于一维数组的对象,它由一组数据和与之相关的索引组成,创建一个简单的Series对象:>>> from pandas import Series >>> a=Series([3,4,-9,2]) >>> a 0 3 1 4 2 -9 3 2 dtype: int64
Series对象的索引在左边,值在右边,由于我们没有指定索引,所以会自动创建一个1到N的索引,可以通过values和index属性来获得值和索引:
>>> a.values array([ 3, 4, -9, 2], dtype=int64) >>> a.index Int64Index([0, 1, 2, 3], dtype='int64')
我们可以自定义索引值:
>>> b=Series([2,3,1,4],index=['x','y','w','z']) >>> b x 2 y 3 w 1 z 4 dtype: int64 >>> b.index Index([u'x', u'y', u'w', u'z'], dtype='object')
可以通过索引的方式选取Series中的一个或多个值:
>>> b['y'] 3 >>> b['x']=11 >>> b[['x','y']] x 11 y 3 dtype: int64
数组运算会保留索引和值之间的连接关系:
>>> b*2 x 22 y 6 w 2 z 8 dtype: int64
如果数据被存放在字典中,也可以通过字典来创建Series,并且字典的键就是Series的索引
>>> dics={'marry':18,'tom':19,'terry':20,'joe':23} >>> c=Series(dics) >>> c joe 23 marry 18 terry 20 tom 19 dtype: int64
在下面的这里例子中,dics中跟索引ks相对应的三个值被找到,而sara对应的dics值找不到,其结果就为NaN,表示缺失值,可以通过isnull函数检测是否为缺失值
>>> ks=['marry','tom','terry','sara'] >>> d=Series(dics,index=ks) >>> d marry 18 tom 19 terry 20 sara NaN dtype: float64
>>> d.isnull() marry False tom False terry False sara True dtype: bool
Series一个非常重要的功能是自动对齐索引:
>>> c+d joe NaN marry 36 sara NaN terry 40 tom 38 dtype: float64
DataFrame
DartaFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引,也有列索引。构建DataFrame的方法有多种,一个常用的方法是直接传入由等长列表或numpy数组组成的字典:>>> from pandas import DataFrame >>> data={'name':['Marry','Bob','Tom','Sara'], ... 'sex':[0,1,1,0], ... 'year':[20,23,21,19]} >>> frame=DataFrame(data) >>> frame name sex year 0 Marry 0 20 1 Bob 1 23 2 Tom 1 21 3 Sara 0 19
从输出结果可以看到自动添加了行索引,和Series一样。如果指定列的顺序,就会按照指定的顺序排序:
>>> DataFrame(data,columns=['year','name','sex']) year name sex 0 20 Marry 0 1 23 Bob 1 2 21 Tom 1 3 19 Sara 0
如果指定的列不存在,就会产生NaN值,这点和Series是一
4000
样的
>>> frame2=DataFrame(data,columns=['name','sex','year','country']) >>> frame2 name sex year country 0 Marry 0 20 NaN 1 Bob 1 23 NaN 2 Tom 1 21 NaN 3 Sara 0 19 NaN
可以通过赋值的方式对列进行修改,比如给country赋值为china:
>>> frame2['country']='china' >>> frame2 name sex year country 0 Marry 0 20 china 1 Bob 1 23 china 2 Tom 1 21 china 3 Sara 0 19 china
如果赋值的是一个Series,就会精确匹配DataFrame索引,索引未匹配的全部为缺失值:
>>> from pandas import Series >>> ct=Series(['18','17'],index=[0,2]) >>> frame2['year']=ct >>> frame2 name sex year country 0 Marry 0 18 china 1 Bob 1 NaN china 2 Tom 1 17 china 3 Sara 0 NaN china
del 用于删除列
>>> del frame2['country'] >>> frame2.columns Index([u'name', u'sex', u'year'], dtype='object')
也可以对结果进行转置:
>>> frame2.T 0 1 2 3 name Marry Bob Tom Sara sex 0 1 1 0 year 18 NaN 17 NaN
下表列出了DataFrame所能接受的各种数据:
values属性会以二维数组的形式返回DataFrame数据:
>>> frame2.values array([['Marry', 0L, '18'], ['Bob', 1L, nan], ['Tom', 1L, '17'], ['Sara', 0L, nan]], dtype=object)
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法