本文共 1806 字,大约阅读时间需要 6 分钟。
阅读大概需要3分钟
作者老齐
编辑 zenRRan
链接 http://wiki.jikexueyuan.com/project/start-learning-python/311.html
Pandas 是基于 NumPy 的一个非常好用的库,正如名字一样,人见人爱。之所以如此,就在于不论是读取、处理数据,用它都非常简单。
导读基本的数据结构
Pandas 有两种自己独有的基本数据结构。读者应该注意的是,它固然有着两种数据结构,因为它依然是 Python 的一个库,所以,Python 中有的数据类型在这里依然适用,也同样还可以使用类自己定义数据类型。只不过,Pandas 里面又定义了两种数据类型:Series 和 DataFrame,它们让数据操作更简单了。
以下操作都是基于:
为了省事,后面就不在显示了。并且如果你跟我一样是使用 ipython notebook,只需要开始引入模块即可。
Series
Series 就如同列表一样,一系列数据,每个数据对应一个索引值。比如这样一个列表:[9, 3, 8],如果跟索引值写到一起,就是:
这种样式我们已经熟悉了,不过,在有些时候,需要把它竖过来表示:
上面两种,只是表现形式上的差别罢了。
Series 就是“竖起来”的 list:
另外一点也很像列表,就是里面的元素的类型,由你任意决定(其实是由需要来决定)。
这里,我们实质上创建了一个 Series 对象,这个对象当然就有其属性和方法了。比如,下面的两个属性依次可以显示 Series 对象的数据值和索引:
列表的索引只能是从 0 开始的整数,Series 数据类型在默认情况下,其索引也是如此。不过,区别于列表的是,Series 可以自定义索引:
自定义索引,的确比较有意思。就凭这个,也是必须的。
每个元素都有了索引,就可以根据索引操作元素了。还记得 list 中的操作吗?Series 中,也有类似的操作。先看简单的,根据索引查看其值和修改其值:
这是不是又有点类似 dict 数据了呢?的确如此。看下面就理解了。
读者是否注意到,前面定义 Series 对象的时候,用的是列表,即 Series() 方法的参数中,第一个列表就是其数据值,如果需要定义 index,放在后面,依然是一个列表。除了这种方法之外,还可以用下面的方法定义 Series 对象:
现在是否理解为什么前面那个类似 dict 了?因为本来就是可以这样定义的。
这时候,索引依然可以自定义。Pandas 的优势在这里体现出来,如果自定义了索引,自定的索引会自动寻找原来的索引,如果一样的,就取原来索引对应的值,这个可以简称为“自动对齐”。
在 sd 中,只有'python':8000, 'c++':8100, 'c#':4000
,没有"java",但是在索引参数中有,于是其它能够“自动对齐”的照搬原值,没有的那个"java",依然在新 Series 对象的索引中存在,并且自动为其赋值 NaN
。在 Pandas 中,如果没有值,都对齐赋给 NaN
。来一个更特殊的:
新得到的 Series 对象索引与 sd 对象一个也不对应,所以都是 NaN
。
Pandas 有专门的方法来判断值是否为空。
此外,Series 对象也有同样的方法:
其实,对索引的名字,是可以从新定义的:
对于 Series 数据,也可以做类似下面的运算(关于运算,后面还要详细介绍):
上面的演示中,都是在 ipython notebook 中进行的,所以截图了。在学习 Series 数据类型同时了解了 ipyton notebook。对于后面的所有操作,读者都可以在 ipython notebook 中进行。但是,我的讲述可能会在 Python 交互模式中进行。
下一篇
python科学计算之Pandas使用(二) DataFrame
每日托福单词
indigenous adj. 当地的,本土的
ethnic adj. 种族的,人种的
stereotype n. 思维定势 v. 刻板地对待
discrete adj. 分离的,不相关的
redundant adj. 多余的,过剩的
推荐阅读:
欢迎关注深度学习自然语言处理公众号,我会每天更新自己在科研学习路上的一点一滴!再小的人也有自己的品牌!期待和你一起进步!
长按识别二维码
转载地址:http://npenn.baihongyu.com/