Python应用NumPy与Pandas及Matplotlib完全解析

内容提要

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()函数保存结果,参数是保存的路径以及名称。

更多精彩内容请关注本站!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值