本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):
https://returu.github.io/Python_Data_Analysis/lab/index.html
-
也可以通过百度网盘获取,需要在本地配置代码运行环境,环境配置可以查看【Python基础】2.搭建Python开发环境:
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj
提取码:mnsj
-
前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis
根据《Python for Data Analysis 3rd Edition》翻译整理
—————-————————————-
1.布尔值数组的方法:
1>>> arr = np.random.randn(3,4)
2>>> arr
3array([[ 0.66424397, -0.79797889, 0.21843839, 1.34030836],
4 [ 0.04720848, -0.06814604, -0.94856518, -0.19804657],
5 [-0.60785678, 1.43708049, -0.41147464, 2.15339032]])
6
7>>> arr_bool = arr > 0
8>>> arr_bool
9array([[ True, False, True, True],
10 [ True, False, False, False],
11 [False, True, False, True]])
12
13>>> arr_bool.sum()
146
any()
方法用于检查数组中是否至少有一个True,all()
方法用于检查数组汇总是否每个值都是True。1>>> arr_bool.any()
2True
3
4>>> arr_bool.all()
5False
2.将条件逻辑作为数组操作:
np.where()
函数是三元表达式x if condition eles y
的向量化版本。
where()函数的后两个参数可以是标量也可以是数组。
1>>> xarr = np.arange(0,5)
2>>> xarr
3array([0, 1, 2, 3, 4])
4
5>>> yarr = np.arange(5,10)
6>>> yarr
7array([5, 6, 7, 8, 9])
8
9>>> cond = np.array([True, False, True, False, True])
10
11# 当cond中的元素为True时,取xarr中对应的数据,否则取yarr中对应的数据
12>>> result_1 = np.where(cond ,xarr , yarr)
13>>> result_1
14array([0, 6, 2, 8, 4])
15
16# 当cond中的元素为True时,取xarr中对应的数据,否则设置为99
17>>> result_2 = np.where(cond ,xarr , 99)
18>>> result_2
19array([ 0, 99, 2, 99, 4])
where()函数在数据分析中的一个典型用法就是根据一个数组生成一个新的数组。
例如下面的示例,将原数组中大于0的值替换为99,小于0的值替换为0。
1>>> arr = np.random.randn(3,4)
2>>> arr
3array([[ 0.26423675, 1.39948918, 0.25227462, 2.02816166],
4 [ 0.2963402 , 0.92344492, 0.16676018, 0.49766258],
5 [ 0.70837702, 0.05275197, -1.00935556, 0.05044092]])
6
7>>> arr > 0
8array([[ True, True, True, True],
9 [ True, True, True, True],
10 [ True, True, False, True]])
11
12>>> np.where(arr>0 , 99 , 0)
13array([[99, 99, 99, 99],
14 [99, 99, 99, 99],
15 [99, 99, 0, 99]])
3.np.meshgrid()函数:
np.meshgrid()
函数通常用来生成二维数据网格。
1>>> import matplotlib.pyplot as plt
2
3>>> x = np.arange(4)
4>>> x
5array([0, 1, 2, 3])
6
7>>> y = np.arange(4)
8>>> y
9array([0, 1, 2, 3])
10
11>>> X , Y = np.meshgrid(x , y)
12>>> X
13array([[0, 1, 2, 3],
14 [0, 1, 2, 3],
15 [0, 1, 2, 3],
16 [0, 1, 2, 3]])
17>>> Y
18array([[0, 0, 0, 0],
19 [1, 1, 1, 1],
20 [2, 2, 2, 2],
21 [3, 3, 3, 3]])
22
23plt.plot(X, Y,
24 marker='.', # 点的形状为圆点
25 markersize=10, # 点大小
26 linestyle='') # 线型为空
27
28plt.grid(True)
结果如下所示,可以看到:X, Y = np.meshgrid(x, y) 代表的是将x中每一个数据和y中每一个数据组合生成很多点,然后将这些点的x坐标放入到X中,y坐标放入Y中,并且相应位置是对应的。
本篇文章来源于微信公众号: 码农设计师