Python读书报告

这个学期的Python课,我学到了很多东西,例如numpy、scipy、pandas、matplotlib几个库,接下来就是我对这几个库的基本函数的一些认识:

基本函数的用法

numpy

常用函数

一、数组创建和操作

np.array():创建numpy数组、

np.zeros():返回全0数组、

np.ones():返回全1数组、

np.arange():创建等差数列数组、

np.linspace():创建等间隔数列数组、

np.reshape():改变数组形状

二、数组运算

np.add():加法运算、

np.subtract():减法运算、

np.multiply():乘法运算、

np.divide():除法运算、

np.dot():矩阵乘法、

np.sum():求和、

np.mean():求平均值

三、数组索引和切片

数组名[i]:获取第i个元素、

数组名[start:end]:获取从start到end之间的元素、

数组名[:, col_num]:获取所有行中第col_num列的元素、

数组名[condition]:根据条件获取元素

四、数学函数

np.sin():正弦函数、

np.cos():余弦函数、

np.exp():指数函数、

np.log():自然对数函数、

np.sqrt():平方根函数、

np.power():幂函数

五、统计函数

np.min():最小值、

np.max():最大值、

np.std():标准差、

np.var():方差、

np.median():中位数

基础用法

一、创建ndarray

使用NumPy创建多维数组对象。

二、数组操作

对数组执行各种操作,例如修改维度、选择数据、切片等。

三、数学函数

使用NumPy中的数学函数进行数学运算,例如求平均值、标准差、方差等。

四、随机数生成

使用NumPy中的随机数生成函数生成随机数。

五、线性代数

使用NumPy进行线性代数运算,例如矩阵乘法、逆矩阵求解等。

六、文件操作

使用NumPy读写文件,例如将数组保存到文件或从文件加载数组。


Scipy

一、核心模块

scipy.integrate、scipy.optimize、scipy.signal、scipy.linalg、scipy.stats、scipy.sparse、scipy.fftpack、scipy.ndimage

scipy.integrate

功能: 用于数值积分和微分方程求解。

应用: 可以用于求解常微分方程(ODEs)和积分问题,如计算区域下的面积。

scipy.optimize

功能: 提供了函数最小化(或最大化)和根求解算法。

应用: 常用于科学研究和工程领域,如参数估计和非线性问题求解。

scipy.signal

功能: 信号处理工具,包括滤波器设计、频谱分析和信号处理。

应用: 在音频信号处理和图像处理等领域有广泛应用。

scipy.linalg

功能: 提供了标准线性代数运算,如矩阵乘法、分解和求解线性方程组。

应用: 在需要大量线性代数运算的数据分析和工程计算中非常重要。

scipy.stats

功能: 包含大量的概率分布和统计函数。

应用: 适用于统计分析和概率论相关领域,如假设检验和数据分析。

scipy.sparse

功能: 用于处理稀疏矩阵的工具。

应用: 在处理大规模数据集或高维数据时非常有用,尤其是当数据中的大部分元素为零时。

scipy.fftpack

功能: 快速傅里叶变换(FFT)的实现。

应用: 在信号处理、图像处理等领域中分析频率成分十分常见。

scipy.ndimage

功能: 提供了多维图像处理的功能。

应用: 在图像处理和计算机视觉领域中广泛使用。

二、数值积分和微分

使用 scipy.integrate`进行数值积分、解决常微分方程

使用 scipy.integrate 进行数值积分

scipy.optimize 模块是 SciPy 中用于数值优化的核心组件之一

三、优化算法

函数最小化:是寻找能使给定函数取得最小值的变量值的过程。scipy.optimize 提供了多种最小化方法,如 minimize 函数。

根求解:是找出使函数值为零的变量值的过程。scipy.optimize 中的 root 函数提供了这样的功能。

四、信号处理

滤波器设计:是信号处理中的一个核心任务,用于去除信号中不需要的成分或增强某些部分。

频谱分析:是信号处理中另一个重要任务,用于分析信号的频率成分。scipy.signal 提供了频谱分析的工具,如 Fourier transform。

五、线性代数

矩阵运算:在 scipy.linalg 中,可以执行各种矩阵运算,如矩阵乘法、求逆、行列式计算等

线性方程组求解:解线性方程组是线性代数中的常见问题。scipy.linalg 提供了 solve 函数来求解方程组。

特征值和特征向量:特征值和特征向量在许多领域都有重要应用。scipy.linalg 提供了计算特征值和特征向量的函数。

六、统计和随机数

描述性统计分析、概率分布、假设检验:scipy.stats 模块


pandas

一、数据导入

pd.read_csv(filename):从CSV文件导入数据

pd.read_table(filename):从限定分隔符的文本文件导入数据

pd.read_excel(filename):从Excel文件导入数据

pd.read_sql(query, connection_object):从SQL表/库导入数据

pd.read_json(json_string):从JSON格式的字符串导入数据

pd.read_html(url):解析URL、字符串或者HTML文件

pd.read_clipboard():从粘贴板获取内容

pd.DataFrame(dict):从字典对象导入数据

二、数据导出

df.to_csv(filename):导出数据到CSV文件

df.to_excel(filename):导出数据到Excel文件

df.to_sql(table_name, connection_object):导出数据到SQL表

df.to_json(filename):以Json格式导出数据到文本文件

三、创建对象

pd.DataFrame(np.random.rand(20,5)):创建20行5列的随机数组成的DataFrame对象

pd.Series(my_list):从可迭代对象my_list创建一个Series对象

df.index = pd.date_range('1900/1/30', periods=df.shape[0]):增加一个日期索引

四、数据查看

df.head(n):查看DataFrame对象的前n行

df.tail(n):查看DataFrame对象的最后n行

df.shape():查看行数和列数

df.info():查看索引、数据类型和内存信息

df.describe():查看数值型列的汇总统计

s.value_counts(dropna=False):查看Series对象的唯一值和计数

df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数

五、数据选取

df[col]:根据列名,并以Series的形式返回列

df[[col1, col2]]:以DataFrame形式返回多列

s.iloc[0]:按位置选取数据

s.loc['index_one']:按索引选取数据

df.iloc[0,:]:返回第一行

六、数据清洗

df.columns = ['a','b','c']:重命名列名

pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组

pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组

df.dropna():删除所有包含空值的行

df.fillna(x):用x替换DataFrame对象中所有的空值

s.astype(float):将Series中的数据类型更改为float类型

s.replace(1,'one'):用‘one’代替所有等于1的值

df.rename(columns=lambda x: x + 1):批量更改列名

df.set_index('column_one'):更改索引列

七、数据处理

df[df[col] > 0.5]:选择col列的值大于0.5的行

df.sort_values(col1):按照列col1排序数据,默认升序排列

df.groupby(col):返回一个按列col进行分组的Groupby对象

df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值

df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表

data.apply(np.mean):对DataFrame中的每一列应用函数np.mean

八、数据合并

df1.append(df2):将df2中的行添加到df1的尾部

df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部

df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

九、数据统计

df.describe():查看数据值列的汇总统计

df.mean():返回所有列的均值

df.corr():返回列与列之间的相关系数

df.count():返回每一列中的非空值的个数

df.max():返回每一列的最大值

df.min():返回每一列的最小值

df.median():返回每一列的中位数

df.std():返回每一列的标准差

十、补充

df.astypes: 数据格式转换

df.value_counts:相同数值的个数统计

df.hist(): 画直方图

df.get_dummies: one-hot编码,将类型格式的属性转换成矩阵型的属性。比如:三种颜色RGB,红色编码为[1 0 0]


matplotlib

一、基本绘图函数

绘制线条和标记:plot(x, y, format_string, **kwargs)

绘制散点图:scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, **kwargs)

绘制条形图:bar(x, height, width=0.8, bottom=None, *, align='center', **kwargs)

绘制饼图:pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, normalize=True, **kwargs)

绘制直方图:hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, **kwargs)

二、坐标轴设置函数

设置 x 轴标签:xlabel(xlabel, fontdict=None, labelpad=None, **kwargs)

设置 y 轴标签:ylabel(ylabel, fontdict=None, labelpad=None, **kwargs)

设置图形标题:title(label, fontdict=None, loc='center', pad=None, **kwargs)

设置坐标轴范围:axis(xmin=None, xmax=None, ymin=None, ymax=None, **kwargs)

显示网格线:grid(b=None, which='major', axis='both', **kwargs)

三、图形显示和保存函数:

显示图形:show()

保存图形到文件:savefig(fname, dpi=None, facecolor='w', edgecolor='w', format=None, **kwargs)

创建子图网格并定位子图:subplot(nrows, ncols, index, **kwargs) 或 subplots_adjust(*args, **kwargs)

创建一个图形窗口和一组子图:subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

四、其他函数:

在图上添加文本:text(x, y, s, fontdict=None, **kwargs)

在图上添加注释:annotate(s, xy=None, xytext=None, textcoords=None, arrowprops=None, **kwargs)

显示图像:imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=True, filterrad=4.0, imlim=None, resample=None, url=None, **kwargs)

添加图例:legend(*args, **kwargs)

创建一个新的图形窗口:figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)


具体问题

例子

import numpy as np 

import matplotlib.pyplot as plt

x = np.linspace(0, 6, 100)

y = np.cos(2 * np.pi * x) * np.exp(-x)+0.8

plt.plot(x, y, 'k', color='r', linewidth=3, linestyle="-")

plt.show()

第一行导入了numpy库,并给它起了一个别名np。

numpy是一个用于数值计算的Python库,特别是它提供了多维数组(ndarray)对象,以及各种派生对象(如掩码数组和矩阵)以及用于快速操作这些数组的大量数学函数。

第二行导入了matplotlib库中的pyplot模块,并给它起了一个别名plt。

matplotlib是一个用于绘制图表的Python库,而pyplot模块提供了MATLAB风格的界面,用于绘制图形。

第三行使用numpy的linspace函数创建了一个从0到6(包括0但不包括6)的等差数列,其中包含100个点。这个数列被赋值给变量x,表示x轴上的点。

第四行计算了y轴上的点

它首先计算了2 * np.pi * x(这给出了x轴上的每个点对应的角度,范围从0到12π),然后计算了这些角度的余弦值(np.cos函数)。接着,它计算了np.exp(-x)(即e的-x次方),这是一个衰减函数。最后,它将余弦值与衰减函数相乘,并加上0.8。这给出了y轴上的点,这些点被赋值给变量y。

第五行这行代码使用matplotlib.pyplot的plot函数绘制了由x和y定义的线图。

最后呈现出来的效果如下


图像处理

例子

import numpy as np

from PIL import Image

image = Image.open('iu.jpg')

angle = 45

rotated_image = image.rotate(angle)

rotated_image.show()

第一行导入了numpy库,并为其分配了别名np。

尽管在这段代码中并没有直接使用numpy,但通常numpy被用于数组和矩阵的数值计算。

第二行从PIL(Python Imaging Library,现在通常被称为Pillow)库中导入了Image模块。

PIL是一个用于图像处理的Python库,提供了很多图像处理的工具和方法。

第三行使用PIL库的Image模块中的open函数打开了一个名为iu.jpg的图像文件,并将其加载到一个Image对象中。

这个对象被赋值给变量image,这样就可以在后续的代码中使用这个对象来操作图像。

第四行定义了一个变量angle,并为其赋值45。

这个变量表示了你想要旋转图像的角度,单位是度。

第五行调用了image对象的rotate方法,该方法将图像旋转指定的角度(在这里是45度)。

旋转后的图像被赋值给rotated_image变量,这样你就可以显示或者保存这个旋转后的图像。

第六行调用了rotated_image对象的show方法,该方法会在默认的图像查看器中显示旋转后的图像。

如果在脚本中运行这段代码,它会弹出一个窗口显示旋转后的图像。如果在交互式环境中(如Jupyter Notebook)运行,它可能会直接在输出区域显示图像。

总结:这段代码加载了一个名为iu.jpg的图像文件,将其旋转45度,并在默认的图像查看器中显示了旋转后的图像。

最后呈现出来的效果如下

旋转前:

旋转后:

以上就是我对numpy、scipy、pandas、matplotlib几个库的认识

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值