# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)

写在前面

本来想直接入坑 matplotlib 的,但是因为看了看网友们说的基本都是入门 pandas 和 numpy 开始,还是循序渐进吧,急不得急不得…

正餐开始

本部分采用的编译环境是 jupyter notebook ,之前虽然有简单使用过(还能回想起当时初入门都花了好长时间)不管怎么说,现在再和着视频学习吧~老师和同学们都要寻求转型呢

之前一直忽略了 Edit 这个部分(也无怪,之前都是自己一个人摸索呜呜呜 ),甚至删掉 Cell 都是用小剪刀(那可真是黑历史了(擦汗)
# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第1张图片
选中绿色部分是对代码进行编译,选中蓝色部分即可对 Cell 进行操作(比如按两下DD即可删除,按一下C对 Cell 内容进行复制等操作)
# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第2张图片
若要快速运行代码:
shift+enter 键同时按 即可快速运行该 Cell 内代码并将光标定位到下一行
ctrl+enter 键同时按 即可快速运行该 Cell 内代码,光标不进行移动

对比 pycharm 里面的 Ctrl+Shift+f10

标题、Markdown、Cell 的区别
# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第3张图片

Numpy

产生数组

import numpy as np

一般不推荐使用 import numpy* 因为部分函数可能有冲突,害怕报错

接下来的操作都是默认导入了 numpy 包的

从列表产生数组

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

从列表传入

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

生成全为0的数组

np.zeros(5)

生成全为1的数组

np.ones(5)

注意:上述出来的结果均默认为浮点数,若想将其转化为整数类型,则需:

np.ones(5,dtype = "int")

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第4张图片

可以使用 fill 方法将数组设定为指定值

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

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第5张图片
即可利用 fill() 方法将内容进行替换。但是如果是小数的话,会依据 a 的默认值,所得结果依然为整数:
# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第6张图片
想要正确进行 fill() 操作需要先对格式进行定义:

a = a.astype("float")
a.fill(2.5)
a

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第7张图片
且一定记得要用个参数对 a.astype() 的内容进行接收

  • 与列表不同,数组中要求所有元素的 dtype 是一样的,如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。

还可以使用一些特定的方法生成特殊的数组

生成整数序列:

a = np.arange(1,10)
a

左闭右开的一个区间,所以生成的答案为 1—9

同时可以设置步长:

a = np.arange(1,10,2)
a

采用 arange() 方法,左闭右开的一个区间,所以生成的答案为 1,3,5,7,9

生成等差数列:

a = np.linspace(1,20,20)
a

采用 linspace() 方法,生成一个左右闭合的区间,里面生成20个数字

a = np.linspace(1,20,41)
a

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第8张图片

生成随机数

  • 生成随机数
a = np.random.rand(10)
a

array([0.08325194, 0.87338858, 0.35452514, 0.01557608, 0.24605199,0.88970188, 0.31528014, 0.99042108, 0.54581469, 0.52036265])

  • 生成随机整数
    需要规定前后及生成个数
a = np.random.randint(1,10,10)
a

array([2, 3, 8, 3, 7, 3, 3, 8, 7, 4])

  • 生成二项分布随机数
a = np.random.randn(10)
a

array([ 0.64359913, 0.34418811, -1.02005962, 1.0522183 , -0.57950052, -0.08133944, 0.07244462, 0.66275307, 0.08665061, 0.52686807])

数组属性

查看类型:

如果是查看数组的类型(当然这个没啥好看的,数组的类型就是数组类型…)

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

numpy.ndarray

查看数组中的数据类型∶

我们主要想查看的是 array 里面的内容是什么,采用的是 dtype() 方式

a.dtype

dtype(‘int32’)

查看形状,会返回一个元组,每个元素代表这一维的元素数目∶

a.shape

(5,)

查看数组里面元素的数目∶

a.size

5

查看数组的维度:

a.ndim

1 | 备注:维度的英文为 Dimensionality

索引与切片

索引第一个元素

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

修改第一个元素的值

a[0] = 10

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第9张图片

切片,支持负索引:

a[1:3]
a[1:-2]	#等价于上式
a[-4:3]	#等价于上式

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第10张图片

省略参数

a[::2]	#从开头取到结尾,间隔为2
a[2:]	#从2取到结尾
a[:-1]	#从开头取到倒数第二个元素

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第11张图片

numy现实作用:假设我们记录一部电影的累计票房,可以这样计算每天的票房:

ob = np.array([12000,123123,234344,423233,453325])
ob2 = ob[1:]-ob[:-1]
ob2

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第12张图片

多维数组及其属性

array还可以用来生成多维数组
a = np.array([[1,2,3,4],[5,6,7,8]])

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第13张图片

查看形状
a.shape

(2, 4) 代表是一个2行4列的数组

查看总的元素个数
a.size
查看维数
a.ndim

多维数组索引

对于二维数组,可以传入两个数字来索引:

a = array([[1, 2, 3, 4] , [5, 6, 7, 8]])

a[1,3]

8

其中,1是行索引,3是列索引,中间用逗号隔开,事实上,Python会将它们看成一个元组(1,3),然后按照顺序进行对应。

可以利用索引给它赋值:

a[1,3] = -3

a = array([[ 1, 2, 3, 4] , [ 5, 6, 7, -3]])

事实上,我们还可以使用单个索引来索引一整行内容:

a[1]

array([ 5, 6, 7, -3])

Python会将这单个元组当成对第一维的索引,然后返回对应的内容。

a[:,2]

array([3, 7])

多维数组切片

多维数组,也支持切片操作,想得到第一行的第4和第5两个元素:

a[0,3:5]

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第14张图片

得到最后两行的最后两列:

a[4:,4:]

得到第三列:

a[:,2]

每一维都支持切片的规则,包括负索引,省略:

例如,取出3,5行的奇数列

a[2::2,::2]

# Python 数据分析三剑客 numpy / pandas / matplotlib (numpy篇①)_第15张图片

你可能感兴趣的:(菜鸟学Python,python,数据分析,pycharm)