python科学计算之Pandas使用(一)

阅读大概需要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 交互模式中进行。

原文发布于微信公众号 - 深度学习自然语言处理(zenRRan)

原文发表时间:2018-04-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏绿巨人专栏

TypeScript中的怪语法

4715
来自专栏深度学习自然语言处理

python科学计算之Pandas使用(二)

Pandas 是基于 NumPy 的一个非常好用的库,正如名字一样,人见人爱。之所以如此,就在于不论是读取、处理数据,用它都非常简单。昨天介绍了 最常见的Pan...

941
来自专栏小灰灰

SPI框架实现之旅三:实现说明

SPI框架实现之旅三:实现说明 前一篇 《SPI框架实现之旅二:整体设计》中,介绍了几个定义的接口,注解;叙述了实现流程;并简单的介绍了 SpiLoader中...

19510
来自专栏游戏杂谈

JavaScript中的编码函数

非URI编码 :escape仅对String对象编码,不能用来对统一资源标示码URI进行编码

1112
来自专栏LhWorld哥陪你聊算法

Pandas库的使用--Series

1482
来自专栏calvin

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)

路由、action的扫描、发现、注册搞定之后,后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取。同样的一行代码我们不厌其烦...

1142
来自专栏李蔚蓬的专栏

JavaScript_note1

4.6.字符串运算符 字符串运算符是用于两个字符型数据之间的运算符,除了比较运算符之外,还可以是+和+=运算符。 Demo:

1012
来自专栏绿巨人专栏

TypeScript中的怪语法

1173
来自专栏程序员互动联盟

【编程基础】聊聊C语言-兵马未动粮草先行(1)

上一篇我们讲的聊聊C语言-我的地盘我做主,相信大家对变量的存储类型和变量的作用域有了一定的了解。现在我们马上公布上期的答案如下: #include<stdio....

3328
来自专栏计算机视觉与深度学习基础

Leetcode 80 Remove Duplicates from Sorted Array II

Follow up for "Remove Duplicates": What if duplicates are allowed at most twic...

1999

扫码关注云+社区

领取腾讯云代金券