前言

本文主要给大家介绍了关于python中Numpy和Pandas使用的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

它们是什么?

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

List、Numpy与Pandas

Numpy与List

相同之处:

都可以用下标访问元素,例如a[0]

都可以切片访问,例如a[1:3]

都可以使用for循环进行遍历

不同之处:

Numpy之中每个元素类型必须相同;而List中可以混合多个类型元素

Numpy使用更方便,封装了许多函数,例如mean、std、sum、min、max等

Numpy可以是多维数组

Numpy用C实现,操作起来速度更快

Pandas与Numpy

相同之处:

访问元素一样,可以使用下标,也可以使用切片访问

可以使用For循环遍历

有很多方便的函数,例如mean、std、sum、min、max等

可以进行向量运算

用C实现,速度更快

不同之处:Pandas拥有Numpy一些没有的方法,例如describe函数。其主要区别是:Numpy就像增强版的List,而Pandas就像列表和字典的合集,Pandas有索引。

Numpy使用

1、基本操作

import numpy as np

#创建Numpy

p1 = np.array([1, 2, 3])

print p1

print p1.dtype

[1 2 3]

int64

#求平均值

print p1.mean()

2.0

#求标准差

print p1.std()

0.816496580928

#求和、求最大值、求最小值

print p1.sum()

print p1.max()

print p1.min()

6

3

1

#求最大值所在位置

print p1.argmax()

2

2、向量运算

p1 = np.array([1, 2, 3])

p2 = np.array([2, 5, 7])

#向量相加,各个元素相加

print p1 + p2

[ 3 7 10]

#向量乘以1个常数

print p1 * 2

[2 4 6]

#向量相减

print p1 - p2

[-1 -3 -4]

#向量相乘,各个元素之间做运算

print p1 * p2

[ 2 10 21]

#向量与一个常数比较

print p1 > 2

[False False True]

3、索引数组

首先,看下面一幅图,理解下

然后,咱们用代码实现看下

a = np.array([1, 2, 3, 4, 5])

print a

[1 2 3 4 5]

b = a > 2

print b

[False False True True True]

print a[b]

[3 4 5]

a[b]中,只会保留a中所对应的b位置为True的元素

4、原地与非原地

咱们先来看一组运算:

a = np.array([1, 2, 3, 4])

b = a

a += np.array([1, 1, 1, 1])

print b

[2 3 4 5]

a = np.array([1, 2, 3, 4])

b = a

a = a + np.array([1, 1, 1, 1])

print b

[1 2 3 4]

从上面结果可以看出来,+=改变了原来数组,而+没有。这是因为:

+=:它是原地计算,不会创建一个新的数组,在原始数组中更改元素

+:它是非原地计算,会创建一个新的数组,不会修改原始数组中的元素

5、Numpy中的切片与List的切片

l1 = [1, 2, 3, 5]

l2 = l1[0:2]

l2[0] = 5

print l2

print l1

[5, 2]

[1, 2, 3, 5]

p1 = np.array([1, 2, 3, 5])

p2 = p1[0:2]

p2[0] = 5

print p1

print p2

[5 2 3 5]

[5 2]

从上可知,List中改变切片中的元素,不会影响原来的数组;而Numpy改变切片中的元素,原来的数组也跟着变了。这是因为:Numpy的切片编程不会创建一个新数组出来,当修改对应的切片也会更改原始的数组数据。这样的机制,可以让Numpy比原生数组操作更快,但编程时需要注意。

6、二维数组的操作

p1 = np.array([[1, 2, 3], [7, 8, 9], [2, 4, 5]])

#获取其中一维数组

print p1[0]

[1 2 3]

#获取其中一个元素,注意它可以是p1[0, 1],也可以p1[0][1]

print p1[0, 1]

print p1[0][1]

2

2

#求和是求所有元素的和

print p1.sum()

41

[10 14 17]

但,当设置axis参数时,当设置为0时,是计算每一列的结果,然后返回一个一维数组;若是设置为1时,则是计算每一行的结果,然后返回一维数组。对于二维数组,Numpy中很多函数都可以设置axis参数。

#获取每一列的结果

print p1.sum(axis=0)

[10 14 17]

#获取每一行的结果

print p1.sum(axis=1)

[ 6 24 11]

#mean函数也可以设置axis

print p1.mean(axis=0)

[ 3.33333333 4.66666667 5.66666667]

Pandas使用

Pandas有两种结构,分别是Series和DataFrame。其中Series拥有Numpy的所有功能,可以认为是简单的一维数组;而DataFrame是将多个Series按列合并而成的二维数据结构,每一列单独取出来是一个Series。

咱们主要梳理下Numpy没有的功能:

1、简单基本使用

import pandas as pd

pd1 = pd.Series([1, 2, 3])

print pd1

0 1

1 2

2 3

dtype: int64

#也可以求和和标准偏差

print pd1.sum()

print pd1.std()

6

1.0

2、索引

(1)Series中的索引

p1 = pd.Series(

[1, 2, 3],

index = ['a', 'b', 'c']

)

print p1

a 1

b 2

c 3

dtype: int64

print p1['a']

(2)DataFrame数组

p1 = pd.DataFrame({

'name': ['Jack', 'Lucy', 'Coke'],

'age': [18, 19, 21]

})

print p1

age name

0 18 Jack

1 19 Lucy

2 21 Coke

#获取name一列

print p1['name']

0 Jack

1 Lucy

2 Coke

Name: name, dtype: object

#获取姓名的第一个

print p1['name'][0]

Jack

#使用p1[0]不能获取第一行,但是可以使用iloc

print p1.iloc[0]

age 18

name Jack

Name: 0, dtype: object

总结:

获取一列使用p1["name']这种索引

获取一行使用p1.iloc[0]

3、apply使用

apply可以操作Pandas里面的元素,当库里面没用对应的方法时,可以通过apply来进行封装

def func(value):

return value * 3

pd1 = pd.Series([1, 2, 5])

print pd1.apply(func)

0 3

1 6

2 15

dtype: int64

同样可以在DataFrame上使用:

pd2 = pd.DataFrame({

'name': ['Jack', 'Lucy', 'Coke'],

'age': [18, 19, 21]

})

print pd2.apply(func)

age name

0 54 JackJackJack

1 57 LucyLucyLucy

2 63 CokeCokeCoke

4、axis参数

Pandas设置axis时,与Numpy有点区别:

当设置axis为'columns'时,是计算每一行的值

当设置axis为'index'时,是计算每一列的值

pd2 = pd.DataFrame({

'weight': [120, 130, 150],

'age': [18, 19, 21]

})

0 138

1 149

2 171

dtype: int64

#计算每一行的值

print pd2.sum(axis='columns')

0 138

1 149

2 171

dtype: int64

#计算每一列的值

print pd2.sum(axis='index')

age 58

weight 400

dtype: int64

5、分组

pd2 = pd.DataFrame({

'name': ['Jack', 'Lucy', 'Coke', 'Pol', 'Tude'],

'age': [18, 19, 21, 21, 19]

})

#以年龄分组

print pd2.groupby('age').groups

{18: Int64Index([0], dtype='int64'), 19: Int64Index([1, 4], dtype='int64'), 21: Int64Index([2, 3], dtype='int64')}

6、向量运算

需要注意的是,索引数组相加时,对应的索引相加

pd1 = pd.Series(

[1, 2, 3],

index = ['a', 'b', 'c']

)

pd2 = pd.Series(

[1, 2, 3],

index = ['a', 'c', 'd']

)

print pd1 + pd2

a 2.0

b NaN

c 5.0

d NaN

dtype: float64

出现了NAN值,如果我们期望NAN不出现,如何处理?使用add函数,并设置fill_value参数

print pd1.add(pd2, fill_value=0)

a 2.0

b 2.0

c 5.0

d 3.0

dtype: float64

同样,它可以应用在Pandas的dataFrame中,只是需要注意列与行都要对应起来。

总结

这一周学习了优达学城上分析基础的课程,使用的是Numpy与Pandas。对于Numpy,以前在Tensorflow中用过,但是很不明白,这次学习之后,才知道那么简单,算是有一定的收获。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

参考

python使用教程pandas-python学习教程之Numpy和Pandas的使用相关推荐

  1. python基础教程 pdf github_python基础教程之Jupyter导出PDF从入门到绝望(已解|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ Jupyter导出PDF从入门到绝望(已解决) 问题描述 我在使用jupyter lab的时候,想要把我的 ...

  2. 零基础新手自学Python编程教程入门精通学习资料网站大全

    零基础新手自学Python编程教程入门精通学习资料网站大全 今天说下关于Python的一些普及知识,以及学习资料,这一节我来跟大家分享下. 1 为什么要学习Python? 1 Python是一个脚本语 ...

  3. [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. python有趣的代码-python菜鸟教程,python好玩又简单的代码

    如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...

  5. Python培训教程:Python有哪些比较重要的内置函数?

    学习Python技术或者参加Python工作的小伙伴们应该都知道,在Python编程语言中会经常出现很多内置函数,很少有人清楚这些函数,但是它的功能是不可小觑的,下面小编就为大家详细介绍一下Pytho ...

  6. python基础教程 下载-Python基础教程第3版中国PDF电子书免费下载

    本书包括 Python 程序设计的方方面面:首先,从 Python 的安装开始,随后介绍了 Python 的基础知识和基本概念,包括列表.元组.字符串.字典以及各种语句:然后,循序渐进地介绍了一些相对 ...

  7. python黑马教程ppt_,python基础教程 PPT

    python基础教程 PPT Python我这里有Python编开发,进阶,化,实战等系列视频教程,还有安装包,素材,代码内容,这里就不一一说了,全套内容一共300G左右,非常的详细,需要的请到网盘下 ...

  8. Python基础教程,Python入门教程

    Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...

  9. STL快速入门学习教程之map的简单使用

    STL快速入门学习教程之map的简单使用 map是STL中的一个关联容器,它以一对一的数据进行整理(第一个数值称为关键字,且这个关键字只能在map中出现一次,第二个数值称为前关键字的值),正是由于这种 ...

最新文章

  1. 【经验】向word中插入格式化的代码块
  2. iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文
  3. 关于如何修改Redmine系统中的字段问题解答
  4. 有关bbr以及锐速的更新搬运
  5. 数据库的硬迁移和mysql 5.5.38源码安装
  6. 垃圾回收②---相关概念
  7. java hotspot 是什么_什么是HotSpot
  8. 智能美观网速快 有这样的无线路由吗?
  9. V270文件存储服务器,天堂2V270 服务端和客户端
  10. 通过精益售后服务提升企业竞争力
  11. python 多重类继承__init__
  12. jenkins构建报错: ssh: connect to host github.com port 22: Connection timed out
  13. HTML自定义滚动条附效果图和完整源码
  14. android开源社区
  15. springboot+vue博客项目(码神之路博客项目)
  16. 购物车实现原理(干货满满)
  17. js将数字金额转换为大写人民币
  18. css图片精灵定位_DIV CSS Sprites精灵 CSS图像拼合 CSS背景贴图定位教程案例
  19. 眉山市职称计算机成绩,眉山市2014年第5次(10月份)全国职称计算机考试成绩
  20. CSS伪类选择器nth-child 选择3的倍数个元素写法

热门文章

  1. Lua 代码编写技巧
  2. 关于使用“JS获取屏幕,浏览器,网页高度宽度”的个人思考
  3. Servlet--06--解决乱码问题; 请求转发; 重定向;
  4. 上传文件重命名后,下载时,用文件原名,不用Guid命名
  5. 61计蒜客 动态规划基础 蒜头君的城堡之旅
  6. linux系统知识 - 信号基础
  7. hive优化之------控制hive任务中的map数和reduce数
  8. ADO.NET中的五个主要对象介绍及使用
  9. 关于存储过程不直接返回结果集的问题
  10. python软件安装步骤-初学者python详细安装步骤_编程工具