https://blog.csdn.net/happyhorizion/article/details/77894035

初接触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类型

--------------------- 本文来自 lxy_Alex 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/happyhorizion/article/details/77894035?utm_source=copy

python及numpy,pandas易混淆的点的更多相关文章

  1. 【python】numpy pandas 特性(随时更新)

    [value map] 用df.replace(dict)可以解决.但是如果dict太大,会非常非常慢. [array相加的维度规律][广播] (2,3) 能和 (3,) 相加,不能和(2,)相加 ( ...

  2. Python安装numpy,pandas慢,超时报错,下载不了的解决方法

    由于python的默认源是国外的,所以下载的时候会很慢,甚至会出现超时下载失败,提供两个解决方法 1.设置pip的超时限制 打开cmd 输入pip --default-timeout=100 inst ...

  3. Python之numpy,pandas实践

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言. Jupyter Notebook 的本质是一个 Web 应用程序,便 ...

  4. 统计学(检验、分布)的 python(numpy/pandas/scipy) 实现

    scipy 中统计相关的 api:https://docs.scipy.org/doc/scipy/reference/stats.html https://zhuanlan.zhihu.com/p/ ...

  5. 有关python numpy pandas scipy 等 能在YARN集群上 运行PySpark

    有关这个问题,似乎这个在某些时候,用python写好,且spark没有响应的算法支持, 能否能在YARN集群上 运行PySpark方式, 将python分析程序提交上去? Spark Applicat ...

  6. Python: NumPy, Pandas学习资料

    NumPy 学习资料 书籍 NumPy Cookbook_[Idris2012] NumPy Beginner's Guide,3rd_[Idris2015] Python数据分析基础教程:NumPy ...

  7. 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn

    本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...

  8. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  9. python安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

随机推荐

  1. Oracle 12c安装详细步骤,带截图

    1,在官网上下载oracle的压缩文件,两个都要下载. 并两个同时选中解压在一个文件夹里面. 2,解压之后,如下图,点击setup.exe稍等一会儿 ,3,开始安装: 不选点击下一步,或者直接点击下一 ...

  2. SharePoint 2013 设置customErrors显示实际的错误信息

    一.首先设置IIS中的Web.config文件 找到对应的IIS应用程序目录,如:C:\inetpub\wwwroot\wss\VirtualDirectories\3000 在此文件夹下包含一个we ...

  3. 查看当前mysql数据库实例中,支持的字符集有哪些,或者是否支持某个特定字符集

    需求描述: 查看当前mysql实例中支持哪些字符集,过滤特定的字符集 操作过程: 1.通过show character set来进行查看 mysql> show character set; + ...

  4. python计算时间差的方法

    本文实例讲述了python计算时间差的方法.分享给大家供大家参考.具体分析如下: 1.问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2.解决方法: 标准模块date ...

  5. Tomcat服务器的搭建

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  6. 运行 3ds Max 时出现的性能问题

          运行 3ds Max 时性能减慢或迟缓通常是由于视频配置冲突或内存分配问题引起的.关于性能问题的一大难点在于缩小范围确定问题原因.以下是一些限制 3ds Max 操作的常见情形,以及纠正这 ...

  7. C++11新特性之七——final/override控制

    重载和重写的区别参见: C++继承中重载.重写.重定义的区别: 在了解C++11中的final/override关键字之前,我们先回顾一下C++关于重载的概念.简单地说,一个类A中声明的虚函数fun在 ...

  8. iOS-代码修改Info.plist文件

    解决办法: 1.首先系统的Info.Plist文件是只读文件 并不能 写入.目前我个人是没有办法存入,官方属性 可以看到是readOnly 2.那么我们 就想代码修改Info.Plist文件怎么办呢, ...

  9. PostgreSQL数据库smallint、bigint转到Oracle,要用什么类型替代? 是number么,那长度分别是多少?

    个人意见,仅供参考:smallint是有符号或无符号2字节的整数,范围是0-65,536,5位整数bigint是有符号或无符号8字节的整数,范围是0-18,446,744,073,709,551,61 ...

  10. c++ 重载、重写、重定义(隐藏)

    1.重载overload:函数名相同,参数列表不同. 重载只是在类的内部存在,或者同为全局范围.(同名,同参函数返回值不同时,会编译出错.因为系统无法知晓你到底要调用哪一个.)   2.重写overr ...