内容提要
python与第三方库
NumPy的使用
Pandas的使用
Matplotlib的使用
一、Python与第三方库
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
1991年,第一个Python编译器诞生。它是由C语言实现的,且能够调用C语言的库文件。从其诞生,Python就已经具有了类、函数、异常处理、包含表和词典的核心数据类型,以及以模块为基础的拓展系统。
python应用非常广泛:Web开发、数据分析、人工智能、数学处理、科学计算及自动化运维等各个方面。
Python有很多常用的内置模块,如表所示。
【例】 使用内置模块输出系统当前时间,在交互模式下输入代码。
>>> import datetime
>>> nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
>>> print(nowTime)
2024-06-13 13:24:50
第三方库的存在使得Python更加灵活。第三方库的安装有以下两种方式。
第一种方式是源文件安装,下载源码进行安装。
第二种方式是使用pip工具在线安装。
例如:第三方库NumPy的安装
在交互模式下输入:pip install numpy==1.26.4
或安装最新版 pip install numpy
说明:pip是Python包管理工具,用于安装、更新、删除Python库或工具等。
二、NumPy的使用
1.安装与简介
NumPy官网上将NumPy概括为:NumPy具有强大的N维数组对象ndarray,广播功能函数,整合C、C++、Fortran代码的工具。另外,其还包括傅里叶变换、随机数生成等功能。
NumPy的特点之一是其N维数组对象ndarray,它是一系列同类型数据的集合,以0为下标开始进行集合中元素的索引。ndarray对象是用于存放同类型元素的多维数组。
Numpy最新版本的安装:pip install numpy
2.基础操作
(1)创建数组
方式一:通过array()函数将Python的列表或者元组转换为数组,数组中的类型是由列表或者元组原有的数据类型推导出的。
【例1】 利用array()函数生成数组,在交互模式下输入以下代码。
>>> import numpy as np
>>> a = np.array([2,3,4]) # 列表转换为NumPy
>>> a
array([2, 3, 4])
>>> a.dtype # NumPy的类型
dtype('int32')
>>> b = np.array((1.2, 3.5, 5.1)) # 元组转换为NumPy
>>> b
array([1.2, 3.5, 5.1])
>>> b.dtype
dtype('float64')
>>> c = np.array([(1.5,2,3), (4,5,6)]) # 二维NumPy
>>> c
array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])
>>> c.dtype
dtype('float64')
方式二:NumPy提供了几个函数来创建具有初始占位符内容的数组。
zeros()函数可以创建一个全为0的数组;ones()函数可以创建一个全为1的数组;
empty()函数可以创建一个初始内容随机的数组,其内容取决于内存的状态。默认情况下,创建的数组类型是float64。
【例2】 生成具有占位符的数组,在交互模式下输入以下代码。
>>> np.zeros((3,4))
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
>>> np.ones((2,3,4), dtype=np.int16) # 可以指定类型
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)
>>> np.empty((2,3))
array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])
方式三:NumPy通过arange()函数得到数组,arange()函数的原型为arange(start, end, step),起始值为start,终止值为end,但不含终止值,步长为step。arange()函数可以使用float型数据。
【例2】 利用arange()函数生成数组,在交互模式下输入以下代码。
>>> np.arange(1, 5)
array([1, 2, 3, 4])
>>> np.arange(1, 5, 2)
array([1, 3])
(2)打印数组
【例4】 将一维数组打印为行,将二维数组打印为矩阵,将三维数组打印为矩阵列表,在交互模式下输入以下代码。
>>> a = np.arange(6)
>>> a
array([0, 1, 2, 3, 4, 5])
>>> a = np.arange(12).reshape(4, 3) # reshape用于改变数组形状
>>> a
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> a = np.arange(24).reshape(4, 3, 2)
>>> a
(3)数组运算
【例5】 进行数组的加减,在交互模式下输入以下代码。
>>> b = np.arange(4, 8)
>>> a = np.arange(1, 4)
>>> a
array([1, 2, 3])
>>> b = np.arange(4, 7)
>>> b
array([4, 5, 6])
>>> a + b
array([5, 7, 9])
>>> a - b
array([-3, -3, -3])
【例6】 学习数组元素相乘与数组矩阵相乘,在交互模式下输入以下代码。
>>> a = np.array( [[1, 1],
... [0, 1]])
>>> a
array([[1, 1],
[0, 1]])
>>> b = np.array( [[2, 1],
... [3, 4]])
>>> a * b
array([[2, 1],
[0, 4]])
>>> a @ b
array([[5, 5],
[3, 4]])
>>> a.dot(b)
array([[5, 5],
[3, 4]])
(4)形状改变
NumPy可以使用命令更改矩阵的形状。ravel()、reshape()、T这3个方法会返回已修改的矩阵,但不会更改原始矩阵;resize()方法会更改原始矩阵。
【例7】 学习改变NumPy矩阵形状的操作,在交互模式下输入以下代码。
>>> a = np.array([(1,2,3), (4,5,6)]) # 创建NumPy
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.shape
(2, 3)
>>> a.ravel() # NumPy展平
array([1, 2, 3, 4, 5, 6])
>>> a.ravel().shape
(6,)
>>> a.reshape(3, 2) # NumPy修改形状
array([[1, 2],
[3, 4],
[5, 6]])
>>> a.reshape(3, 2).shape
(3, 2)
>>> a.T # NumPy转置
array([[1, 4],
[2, 5],
[3, 6]])
>>> a.T.shape
(3, 2)
三、Pandas的使用
1.安装与简介
在交互模式下完成Pandas的安装,输入以下代码。
pip install pandas==1.2.3
或安装最新版 pip install pandas
Pandas安装界面如图所示。
在交互模式下输入“import pandas as pd”,pd是Pandas的别名,是通用写法。
>>>import pandas as pd
>>>
2.基础操作
(1)创建Series对象
Series对象是Pandas中的一维数据结构,能存储不同类型的数据。Series对象中的每个元素都有一组索引与之对应,可以将其看作特殊的Python字典。
【例8】 创建一个Series对象并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> a = pd.Series([1, -5, [1,2], "aa", {"aa": 7}])
>>> a
0 1
1 -5
2 [1, 2]
3 aa
4 {'aa': 7}
dtype: object
说明:
Series对象可以传入数字、列表、字典等类型,将该对象打印会输出元素和与之对应的索引。
如果在传入的时候没有加入索引,会默认将非负整数作为索引。Pandas中的整型为int64,浮点型为float64,字符串、布尔型等其他数据类型都为object。
【例9】 创建一个Series对象,为其增加索引并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> a = pd.Series(["b", 2, [1 ,2]], index = ["a", "b", "c"])
>>> a
a b
b 2
c [1, 2]
dtype: object
说明:
打印输出的不仅有元素,还有索引值,索引与元素之间是一种映射关系。如果填充的是一个字典,那么字典的键就会成为索引,值成为元素。
【例10】 创建一个字典,将其填充到Series对象并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> dict = {"a":1, "b":2, "c":3}
>>> a = pd.Series(dict)
>>> a
a 1
b 2
c 3
dtype: int64
说明:如果元素都是整数,那么默认的数据类型就为int64。
(2)访问Series元素
Series对象中的元素可以像列表那样被访问。由于它拥有索引和下角标两种属性,所以通过这两种方式都可以访问元素。如果不指定索引,那么索引和下角标的数值就默认是一样的。
【例11】 访问Series对象的元素并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> a = pd.Series(["b", 2, [1 ,2]], index = ["a", "b", "c"])
>>> a
a b
b 2
c [1, 2]
dtype: object
>>> a[1]
2
>>> a["b"]
2
说明:可以对Series对象的元素和索引进行修改。
【例12】 修改Series对象的元素和索引并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> a = pd.Series([1, 2, 3], index = ["a", "b", "c"])
>>> a
a 1
b 2
c 3
dtype: int64
>>> a[1] = 6 # 修改元素
>>> a
a 1
b 6
c 3
dtype: int64
>>> a.index = ["d", "e", "f"] # 修改索引
>>> a
d 1
e 6
f 3
dtype: int64
说明:修改元素和修改索引一样,都是在原处进行的,不会在内存中进行复制操作。
(3)创建DataFrame对象
DataFrame是Pandas中的二维数据结构,能存储不同类型的数据,有行索引和列索引,并与元素对应。
如果将Series对象比作带灵活索引的一维数组,那么DataFrame对象就可以看作既有行索引又有列索引的二维数组。
【例13】 从字典中构造DataFrame对象并输出,在交互模式下输入以下代码。
>>> import pandas as pd
>>> a = {"a":[1, 2], "b": [3, 4]}
>>> a
{'a': [1, 2], 'b': [3, 4]}
>>> df = pd.DataFrame(data=a)
>>> df
a b
0 1 3
1 2 4
说明:可以看出,有行索引0、1,也有列索引a、b。
四、Matplotlib的使用
1.安装与简介
在交互界面完成Matplotlib的安装,代码如下。
pip install matplotlib==3.2.0
或 pip install matplotlib
安装完成后,在交互模式下输入“import matplotlib. pyplot as plt”,如图所示。
说明:
Matplotlib可以和图形工具包一起使用,如PyQt和wxPython。
使用Matplotlib,可以用几行代码进行绘图,包括直方图、功率谱图、条形图、错误图、散点图等。
2.基础操作
Matplotlib中最重要的功能是plot,它可以绘制二维数据。
【例14】 在basis目录下新建文件,命名为sin.py,绘制一个正弦图像,在PyCharm中输入以下代码。
import numpy as np
import matplotlib.pyplot as plt
# 计算余弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
# 使用Matplotlib绘制点
plt.plot(x, y)
# 调用plt.show()才能显示图形
plt.show()
运行效果图:
【例15】 在basis目录下新建文件,命名为sin_cos.py,绘制一个正弦和余弦图像,并且添加标题、图例和轴标签,在PyCharm中输入以下代码。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线和余弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 使用Matplotlib绘制点
plt.plot(x, y_sin)
plt.plot(x, y_cos)
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.title('Sine and Cosine')
plt.legend(['Sine', 'Cosine'])
plt.show()
运行效果图:
【例16】 在basis目录下新建文件,命名为sin_cos_part.py,绘制一幅图,将正弦、余弦图像绘制在图的不同区域,并且添加标题,在PyCharm中输入以下代码。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线和余弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 将第一个子图设置为活动状态,制作第一个区域
plt.subplot(2, 1, 1)
plt.plot(x, y_sin)
plt.title('Sine')
# 将第二个子图设置为活动状态,制作第二个区域
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 显示图
plt.show()
效果图:
说明:Matplotlib的plt.scatter()函数可以绘制散点图,函数原型为:
matplotlib.plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolor=None, *,
data=None, **kwargs)
【例17】 在basis目录下新建文件,命名为scatter.py,绘制一幅正弦散点图,在PyCharm中输入以下代码。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.scatter(x, y)
plt.show()
运行效果图:
【例18】 在basis目录下新建文件,命名为save.py,绘制一幅正弦散点图并保存,在PyCharm中输入以下代码。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.scatter(x, y)
plt.savefig("image.png")
plt.show()
说明:使用plt.savefig()函数保存结果,参数是保存的路径以及名称。
更多精彩内容请关注本站!!!