numpy、scipy、pandas、matplotlib的读书报告

目录

一.Numpy库:

1)基本函数:

 2)实际问题处理:

二.Scipy库:

1)基本函数:

2)用scipy.ndimage模块处理图像:

三.Pandas库:

1)基本函数:

2)实例:

四.Matplotlib库:

1)基本函数:

2)实例:


一.Numpy库:

科学计算包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C++/Fortran语言无缝结合。

多维数组对象:NumPy的核心是多维数组对象(ndarray),它是一个快速而灵活的大数据容器,可以存储相同类型的数据。

数学函数:NumPy提供了大量的数学函数,用于在数组上执行元素级的计算和操作。

线性代数:NumPy支持各种线性代数操作,如矩阵乘法、特征值计算等。

统计函数:NumPy还包含许多统计函数,用于计算数组的描述性统计量。

随机数生成:NumPy有一个随机数生成器,用于生成符合各种分布的随机数。


1)基本函数:

函数说明示例
numpy.array()创建一个数组arr = numpy.array([1, 2, 3, 4])
numpy.zeros()创建一个全零数组zeros = numpy.zeros((3, 3))
numpy.ones()创建一个全一数组ones = numpy.ones((2, 2))
numpy.eye()创建一个对角线上为1,其余为0的数组(单位矩阵)eye = numpy.eye(3)
numpy.arange()创建一个具有等差步长的数组arange = numpy.arange(0, 10, 2)
numpy.linspace()创建一个在指定范围内具有指定数量的等间隔样本的数组linspace = numpy.linspace(0, 1, 5)
numpy.random.rand()创建一个指定形状的数组,数组中的元素来自[0, 1)的均匀分布rand_arr = numpy.random.rand(2, 3)
numpy.random.randn()创建一个指定形状的数组,数组中的元素来自标准正态分布(均值为0,标准差为1)randn_arr = numpy.random.randn(2, 2)
numpy.sum()计算数组元素的总和total = numpy.sum(arr)
numpy.mean()计算数组元素的平均值avg = numpy.mean(arr)
numpy.std()计算数组元素的标准差std_dev = numpy.std(arr)
numpy.min()找到数组元素中的最小值min_val = numpy.min(arr)
numpy.max()找到数组元素中的最大值max_val = numpy.max(arr)
numpy.argmin()找到数组元素中最小值的索引min_index = numpy.argmin(arr)
numpy.argmax()找到数组元素中最大值的索引max_index = numpy.argmax(arr)
numpy.dot()计算两个数组的点积(对于一维数组,这就是向量的点积)dot_prod = numpy.dot(arr1, arr2)
numpy.reshape()更改数组的形状而不更改其数据reshaped_arr = arr.reshape((2, 2))

 2)实际问题处理:

当使用 numpy 库时,我们可以解决各种实际问题,包括数据分析、图像处理、信号处理等。以下是一个简单的例子,我们将使用 numpy 来计算一组数据的平均值、标准差,并找出最大值和最小值。

假设我们有一组关于某个产品销售额的数据,我们需要对这些数据进行基本的统计分析。

import numpy as np  
  
# 假设这是我们的销售额数据(单位:元)  
sales_data = np.array([1200, 1500, 800, 2200, 1000, 1700, 1900, 1100, 2300, 1600])  
  
# 计算销售额的平均值  
average_sales = np.mean(sales_data)  
print(f"平均销售额为:{average_sales}元")  
  
# 计算销售额的标准差  
std_sales = np.std(sales_data)  
print(f"销售额的标准差为:{std_sales}元")  
  
# 找出销售额的最大值  
max_sales = np.max(sales_data)  
print(f"最高销售额为:{max_sales}元")  
  
# 找出销售额的最小值  
min_sales = np.min(sales_data)  
print(f"最低销售额为:{min_sales}元")  
  
# 也可以同时找出最大值和最小值的索引  
max_index = np.argmax(sales_data)  
min_index = np.argmin(sales_data)  
print(f"最高销售额出现在索引位置:{max_index}")  
print(f"最低销售额出现在索引位置:{min_index}")

这段代码首先导入了 numpy 库,并定义了一个名为 sales_data 的一维数组,其中包含了一系列产品的销售额。然后,它使用 numpy 的函数来计算这些数据的平均值、标准差、最大值、最小值以及这些值在数组中的索引位置。这些统计信息对于了解销售数据的特点和趋势非常有用。

二.Scipy库:

scipy在numpy的基础上增加了大量用于数学计算、科学计算以及工程计算的模块,包括线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。

scipy的constants模块包含了大量用于科学计算的常数

scipy的special模块包含了大量函数库,包括基本数学函数、特殊函数以及numpy中的所有函数。

signal模块包含大量滤波函数、B样条插值算法等等。

模块ndimage提供了大量用于N维图像处理的方法。

1)基本函数:

scipy是一个用于数学、科学和工程计算的开源 Python 库,它包含了大量的子模块,每个子模块都提供了特定的功能。以下是 scipy库中一些常用子模块的基本函数及其说明:

子模块函数说明
scipy.optimizescipy.optimize求解函数的最小值(可以处理非线性优化问题)
minimize_scalar求解一元函数的最小值
curve_fit曲线拟合,找到最佳拟合参数
scipy.statsnorm.pdf计算正态分布的概率密度函数值
norm.cdf计算正态分布的累积分布函数值
norm.rvs从正态分布中抽取随机样本
ttest_ind独立样本的 t 检验
scipy.interpolateinterp1d一维插值
griddata多维插值
scipy.signalbutter设计巴特沃斯滤波器
convolve一维卷积
spectrogram计算短时傅里叶变换并返回频谱图
scipy.linalginv计算矩阵的逆
eig计算矩阵的特征值和特征向量
solve求解线性方程组
scipy.integratequad计算一元函数的定积分
odeint求解常微分方程的初始值问题
scipy.spatialdistance.cdist计算两个输入数组之间的成对距离
ConvexHull计算输入点的凸包
scipy.specialgamma计算伽马函数值
erf计算误差函数值
beta计算贝塔函数值

Scipy库的图像处理模块主要包含在scipy.ndimage中,它提供了许多用于图像处理和计算机视觉的功能。

ndimage.gaussian_filter对图像进行高斯滤波,以去除噪声和细节。blurred_image = ndimage.gaussian_filter(image, sigma=2)
ndimage.median_filter可用于中值滤波,这也是一种常见的去噪方法filtered_image = ndimage.median_filter(image, size=3)
ndimage.rotate旋转图像rotated_image = ndimage.rotate(image, angle=45)
ndimage.zoom缩放图像resized_image = ndimage.zoom(image, 0.5)
ndimage.sobel边缘检测

2)用scipy.ndimage模块处理图像:

from scipy import misc
from scipy import ndimage
import matplotlib.pyplot as plt
face = misc.face()                # face是测试图像之一
plt.figure()                      # 创建图形
plt.imshow(face)                  # 绘制测试图像
plt.show()                        # 原始图像


blurred_face = ndimage.gaussian_filter(face, sigma=7)  # 高斯滤波
plt.imshow(blurred_face)
plt.show()                                             # 显示结果图像


blurred_face1 = ndimage.gaussian_filter(face, sigma=1)         # 边缘锐化
blurred_face3 = ndimage.gaussian_filter(face, sigma=3)
sharp_face = blurred_face3 + 6*(blurred_face3-blurred_face1)
plt.imshow(sharp_face) 
plt.show()


median_face = ndimage.median_filter(face, 7)           # 中值滤波
plt.imshow(median_face)
plt.show()

三.Pandas库:

基于numpy的数据分析模块,提供了大量标准数据模型和高效操作大型数据集所需要的工具,可以说pandas是使得Python能够成为高效且强大的数据分析环境的重要因素之一。

Pandas的特点包括:

数据对齐:Pandas可以自动对齐不同索引的数据,使得数据操作更加方便。

处理缺失值:Pandas提供了强大的工具来处理缺失值,包括删除、填充等操作。

强大的数据分析功能:Pandas支持各种数据分析和统计计算,如平均值、中位数、标准差等。

灵活的数据导入和导出:Pandas可以读取和写入多种数据格式,包括CSV、Excel、SQL数据库、JSON等。

1)基本函数:

函数名说明
read_csv()从CSV文件中读取数据,并返回一个DataFrame对象。
read_excel()从Excel文件中读取数据,并返回一个DataFrame对象。
head(n)返回DataFrame的前n行(默认为5行)。
tail(n)返回DataFrame的后n行(默认为5行)。
info()提供DataFrame的基本信息,如列名、数据类型、非空值数量等。
describe()提供DataFrame中数值列的描述性统计信息,如计数、平均值、标准差、最小值、最大值等。
sort_index()根据索引对DataFrame或Series进行排序(默认为升序)。
sort_values(by, ascending=True)根据指定列的值对DataFrame进行排序。
reindex(index=None, columns=None)根据新的索引或列标签重新索引DataFrame。
dropna()删除包含缺失值的行或列。
fillna(value=None, method=None)用指定的值或方法填充缺失值。
groupby(by=None)根据指定的列或列组合对数据进行分组。
mean()计算DataFrame中每列或每组的平均值。
sum()计算DataFrame中每列或每组的和。
query(expr)使用查询表达式对DataFrame进行过滤。
import pandas as pd  
  
# 从CSV文件中读取数据  
df = pd.read_csv('data.csv')  
  
# 显示前5行数据  
print(df.head())  
  
# 显示基本信息  
print(df.info())  
  
# 显示描述性统计信息  
print(df.describe())  
  
# 根据索引排序  
df_sorted_index = df.sort_index()  
print(df_sorted_index.head())  
  
# 根据某列的值排序  
df_sorted_values = df.sort_values(by='column_name')  
print(df_sorted_values.head())  
  
# 重新索引  
df_reindexed = df.reindex(columns=['column1', 'column2'])  
print(df_reindexed.head())  
  
# 删除缺失值  
df_no_na = df.dropna()  
print(df_no_na.head())  
  
# 填充缺失值  
df_filled = df.fillna(method='ffill')  
print(df_filled.head())  
  
# 分组并计算平均值  
df_grouped = df.groupby('group_column').mean()  
print(df_grouped.head())  
  
# 使用查询表达式过滤数据  
df_filtered = df.query('column_name > 10')  
print(df_filtered.head())

请注意,上述示例中的data.csv文件应包含要处理的数据,而'column_name''group_column'应替换为实际的列名。此外,你可能需要根据自己的需求调整函数参数和示例代码。

2)实例:

问题:假设我们有一个包含员工销售数据的CSV文件,我们想要找出每个销售部门的总销售额。

解决方案

*读取数据

sales_data = pd.read_csv('sales_data.csv')

*数据分组和聚合

假设CSV文件中有'department'(部门)和'sales_amount'(销售额)两列,我们可以这样计算每个部门的总销售额:

total_sales_per_department = sales_data.groupby('department')['sales_amount'].sum()

*查看结果

print(total_sales_per_department)

结合matplotlib绘图:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum()
df['A'] = pd.Series(list(range(len(df))))
plt.figure()
df.plot(x='A')
plt.show()


四.Matplotlib库:

matplotlib 是一个用于绘制静态、动态和交互式图表的 Python 库。它是数据可视化领域中最常用的库之一,尤其适用于二维图表;

matplotlib模块依赖于numpy模块和tkinter模块,可以绘制多种形式的图形,包括线图、直方图、饼状图、散点图、误差线图等等。

1)基本函数:

函数名说明
plot()绘制线图。可以接收x和y坐标数据,并绘制出线条。
scatter()绘制散点图。根据给定的x和y坐标数据,在图上绘制散点。
bar()绘制条形图。用于显示分类数据的数值关系。
hist()绘制直方图。用于显示数据的分布情况。
pie()绘制饼图。用于显示不同分类的数据占比。
imshow()绘制图像。用于显示图像数据。
xlabel()设置x轴标签。用于给x轴添加标签说明。
ylabel()设置y轴标签。用于给y轴添加标签说明。
title()设置图形标题。用于给整个图形添加标题。
legend()设置图例。用于显示图中的数据系列标签。
xlim()设置x轴范围。用于指定x轴的显示范围。
ylim()设置y轴范围。用于指定y轴的显示范围。
subplot()创建子图。用于在一张画布上创建多个子图。
subplots()创建多个子图并返回画布和子图对象。与subplot()类似,但更简洁。
savefig()保存图形到文件。将绘制的图形保存为图片文件。
show()显示图形。在屏幕上显示绘制的图形。
close()关闭图形。关闭当前显示的图形窗口。
figure()创建图形对象。用于创建一个新的图形窗口。

2)实例:

import numpy as np
import pylab as pl

t = np.arange(0.0, 2.0*np.pi, 0.01)  #生成数组,0到2π之间,以0.01为步长
s = np.sin(t)                        #对数组中所有元素求正弦值,得到新数组
pl.plot(t,s)                         #画图,以t为横坐标,s为纵坐标
pl.xlabel('x')                       #设置坐标轴标签
pl.ylabel('y')
pl.title('sin')                                    #设置图形标题
pl.show()                                          #显示图形


a = np.arange(0, 2.0*np.pi, 0.1)
b = np.cos(a)
pl.scatter(a,b)
pl.show()


import numpy as np
import pylab as pl
import matplotlib.font_manager as fm

myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf') #设置字体
t = np.arange(0.0, 2.0*np.pi, 0.01)                       # 自变量取值范围
s = np.sin(t)                                             # 计算正弦函数值
z = np.cos(t)                                             # 计算余弦函数值
pl.plot(t, s, label='正弦')
pl.plot(t, z, label='余弦')
pl.xlabel('x-变量', fontproperties='STKAITI', fontsize=18) # 设置x标签
pl.ylabel('y-正弦余弦函数值', fontproperties='simhei', fontsize=18)
pl.title('sin-cos函数图像', fontproperties='STLITI', fontsize=24)
pl.legend(prop=myfont)                                                          # 设置图例
pl.show()

  • 23
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值