专栏首页人工智能LeadAIpython及numpy,pandas易混淆的点

python及numpy,pandas易混淆的点

初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可思议的简单命令就可以完成非常复杂的计算,但是真正接触一下就发现,python比matlab有很多不一样的特性。

首先python的工具包(类似于C的库函数)非常多,很多功能都有重复,所以选好包很重要,最简单的选择方法就是用时下最流行的包,社区比较活跃,遇到问题网上一搜很多答案,而且更新和维护也比较好。

在数值计算中常用的包就是numpy,pandas,scipy以及绘图用的matplotlib。

Numpy

numpy的优势是矩阵运算,最大的特点是引入了ndarray-多维数组的概念。在ndarray中,每个[]就代表1维。这里和matlab或者C++或者fortran都很不一样,没有行优先或者列优先的概念。但是numpy还有一个数据结构是mat。

个人觉得是为了便于使用以上语言的人们使用的。例如mat结构可以非常方便地做转置(matName.T),求逆(matName.I),求伴随矩阵(matName.A)

pandas

pandas的Series数据结构对象:类似于numpy的ndarray。

pd.Series(data),data可以是numpy的array或者python的列表都可以.

obj=pd.Series([4,7,-5,3])

obj.index 返回obj的索引

obj.values 返回obj的数据

如果在初始化的时候没有指定索引,默认索引是从0开始到N-1的整数,也可以在初始化的时候就指定索引.

obj2=pd.Series([1,2,3],index=['a','b','c']) 这里index=后面是['a','b','c'],也可以是别的列表对象.

Series对象的index还可以单独赋值,例如obj2的index还可以这样赋值:

obj2.index2=[....]

obj2['a']利用索引访问数据。

字典结构是python的数据结构,pandas中的类似数据结构成为数据框架(DataFrame)。

可以把python字典类型的数据直接给Series对象,pandas会自动将key转换为index,data还是data。

sdata={'a':1, 'b':2}

obj3=Series(sdata)

判断是否是空pd.isnull(Series对象) 或者是 pd.notnull(Series对象)

Series对象也有判断数据是否是空的函数.isnull()。

Series对象也可以有一些基本的算数运算,例如obj+obj2. 在具体执行时,对先比对index,对相同index的数据相加,如果obj有某个index而obj1没有,则数据为NaN。

DataFrame的初始化

对于python的字典结构数据对象,可以直接创建pandas的DataFrame对象,例如:

data={'name':['Sara', 'Ben'],

'Age':[23,34]}

frame=pd.DataFrame(data)

得到一个column分别为name和age,index是0,1的DataFrame。DataFrame就是按照column和index组织起来的数据集合,类似于excel表格,也类似于基本的database结构。

column1   column2   column3
index1        data11      data12       data13
index2       data21      data22      data23
index3       data31      data32      data33
frame1=pd.DataFrame(data,column=[],index=[])

frame1.column 返回column列表,是index类型。

要访问frame1中的某一列数据,可以用frame1['column_name']或者frame1.column_name,这两种方式都可以。

行元素的获取,可以用:frame.ix[index_name]

每列的数据都可以单独赋值: frame.column_name=[....]

容易混淆/出错的地方

生成0-N数列的函数:在python中是range(N+1),但是在numpy中是arange(N+1)。

数组切片:

numpy的零矩阵 np.zeros((3,3)) 3维零矩阵,对于矩阵,形参必须是带括号()的,即tuple类型。

改变多维数组维数 np.reshape((dim1,dim2)) 必须是()的tuple类型。

本文分享自微信公众号 - 人工智能LeadAI(atleadai),作者:HappyHorizon

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-25

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 毫秒级检测!你见过带GPU加速的树莓派吗?

    用户1332428
  • Active Learning: 一个降低深度学习时间,空间,经济成本的解决方案

    ? 下面要介绍的工作发表于CVPR2017(http://cvpr2017.thecvf.com/),题为“Fine-tuning Convolution...

    用户1332428
  • ElasticSearch优化系列一:集群节点规划

    节点职责单一,各司其职 elasticSearch的配置文件中有2个参数:node.master和node.data。这两个参 数搭配使用时,能够帮助提供...

    用户1332428
  • python及numpy,pandas易混淆的点

    初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可思议的简单命令就可以完成非常复杂的计算,但是真正接触一下就发现,python比ma...

    企鹅号小编
  • python练习题-day20

    首先,这三个模块都是序列化工具。 1. json是所有语言的序列化工具,优点跨语言、体积小.只能序列化一些基本的数据类型。int\str\list\tuple...

    郭耀华
  • 机器学习(9)决策树

    决策树仍然是监督学习方法,其基本思路跟我们人做一些决策的思路类似:可能要下雨,那就带伞;可能要停水,那就提前备水……

    滚神大人
  • 【新书连载】DRM引发RAC的故障分析

    编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友...

    数据和云
  • nodejs 从TCP套接字读取并解析数据

    我们在nodejs的应用代码里,监听TCP socket的data事件。当套接字上有数据到达时,注册的事件处理函数被回调。

    Jerry Wang
  • 最能通过大数据重获利的7个行业

    文 | Larry Alton 翻译 | 沙拉丁 译文版权归翻译者和CDA数据分析师共同所有,转载请留言申请授权 世界上每个企业的健康发展都离不开数据的支持。数...

    CDA数据分析师
  • TestDriven.NET (2.7 Beta) 支持Silverlight/CoreCLR

    Silverlight 1.1,在这个微软已经提供下载alpha版本中,包含了一个缩减版的CLR,还有最新发布的Dynamic Language Runtime...

    张善友

扫码关注云+社区

领取腾讯云代金券