1、 第5章 用 NumPy进行简单统计分析学习目标:l 掌握使用NumPy读写文件方法。l 了解NumPy中常用的统计函数。l 掌握运用NumPy函数进行统计分析。l 掌握数据处理中简单的统计分析。在数据分析中,经常需要从文件中读取数据或将数据写入文件,常用的存储文件的格式有文本文件、CSV格式文件、二进制格式文件和多维数据文件等。在NumPy中,loadtxt()和savetxt()函数可以对文件后缀名为txt和csv的文件进行读写操作。5.1.1 使用NumPy读写文本文件1.将1维或2维数组写入TXT文件或CSV格式文件 在NumPy中,使用savetxt()函数可以将1维或2维数组写入后
2、缀名为txt或csv的文件,该函数的格式为:numpy.savetxt(fname,array,fmt=%.18e,delimiter=None,newline=n,header=,footer=,comments=#,encoding=None)函数中主要参数:fname:文件、字符串或产生器,可以是.gz 或.bz2 的压缩文件。array:存入文件的数组(一维数组或者二维数组)。fmt:写入文件的格式,如:%d,%.2f,%.18e,默认值是%.18e其他参数说明及示例test5-1代码见教材。5.1.1 使用NumPy读写文本文件2.读取TXT文件和CSV格式文件 在NumPy中,读取
3、TXT文件和CSV格式文件的函数是loadtxt(),函数格式:numpy.loadtxt(fname,dtype=,comments=#,delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding=bytes)函数中主要参数:fname是文件、字符串或产生器;dtype:数据类型;delimiter:分割符,默认是空格,其他参数说明见教材。【例5-2】利用NumPy函数实现读取文本文件和CSV格式文件的操作。5.1.1 使用NumPy读写文本文件1.使用save()或savez()函
4、数写二进制格式文件 save()或savez()函数的格式:numpy.save(file,array)或 numpy.savez(file,array)函数中参数说明:file:文件,以.npy为扩展名,压缩扩展名为.npz。array:数组变量。2.使用load()函数读取二进制格式文件 load()函数的格式:numpy.load(file)函数中参数说明:file:文件,以.npy为扩展名,压缩扩展名为.npz load()、save()和savez()函数的示例代码example5-1见教材。5.1.2 使用NumPy读写二进制格式文件1.使用tofile()函数写入多维数据文件 t
5、ofile()函数的格式:数组名.tofile(fid,sep=,format=%s)函数中的参数说明:fid:文件、字符串,sep:数据分割符,format:写入数据的格式。2.使用fromfile()函数读取多维数据文件 fromfile()函数的格式:numpy.fromfile(fid,dtype=float,count=1,sep=)函数中的参数说明:fid:文件、字符串,dtype:读取的数据类型。count:读入元素个数,1表示读入整个文件,sep:数据分割符。tofile()和fromfile()函数的示例代码example5-25.1.3 使用NumPy读写多维数据文件 1.
6、求最大值和最小值的函数 在NumPy中,求数组最大值的函数是amax()和nanmax(),求数组最小值函数是amin()和nanmin(),其中,amax()和amin()函数是返回一个数组的最大值和最小值或者是沿轴返回数组的最大值和最小值。nanmax()函数和nanmin()函数是返回忽略任何NaN的数组的最大值和最小值或者是沿轴返回忽略任何NaN的数组的最大值和最小值。如数组是全NaN切片时,将会出现运行警告(RuntimeWarning),并为该切片返回NaN。最大值和最小值的函数的示例代码example5-3见教材。5.2 NumPy常用的统计函数 2.求沿轴方向的取值范围 在Nu
7、mPy中,使用ptp()函数能返回沿某轴axis方向上的最大值-最小区差值,即maximum-minimum的值形成的数组。ptp()函数的示例代码example5-4见教材。3.求百分位数 在NumPy中,使用percentile()和nanpercentile()函数可以沿某轴axis方向计算数组中第q数值的百分位数。4.求中位数 在NumPy中,利用median()和nanmean()函数可以沿某轴axis方向计算数组中的中位数。求百分位数和中位数的示例代码example5-5见教材。5.2 NumPy常用的统计函数 5.求和与加权平均值 在NumPy中,sum()函数是沿某轴axis方
8、向计算数组中相关元素之和,average()函数是沿某轴axis方向计算数组中相关元素的加权平均值。求和与加权平均值的示例代码example5-6见教材。6.算术平均数 算术平均数是所有元素的总和除以元素的数量。在NumPy中,mean()和nanmean()函数可以计算数组或者轴方向的算术平均数。5.2 NumPy常用的统计函数7.标准差 标准差也称为标准偏差,标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根,它反映组内个体间的离散程度。在NumPy中,计算标准差的函数有std()和nanstd()。8.方差 方差是元素与元素的平均数差的平方的平均数mean(abs(x-x
9、.mean()*2)。在NumPy中,计算方差的函数有var()和nanvar()。计算算术平均数、标准差与方差的示例代码example5-7见教材。5.2 NumPy常用的统计函数 NumPy的排序方式主要分为直接排序和间接排序两种。直接排序是指对数值直接进行排序;间接排序是指根据一个或多个键对数据集进行排序。在NumPy中,直接排序常用是sort()函数,而间接排序常用是argsort()函数和lexsort()函数。1.sort()函数 sort()函数作用是返回输入数组的排序副本。sort()函数示例代码example5-8见教材。2.argsort()函数 argsort()函数作用
10、是对输入数组沿着给定轴执行间接排序,并根据指定排序类型返回数据的索引数组。使用该索引数组可以获得排序数据。argsort()函数示例代码example5-9见教材。5.3.1 NumPy 的排序函数3.lexsort()函数 lexsort()函数使用键序列执行间接排序,键可以看作是电子表格中的一列,最后一个键是排序的主键,该函数返回一个索引数组。使用该索引数组可以获得排序数据。示例代码example5-10见教材。5.3.1 NumPy 的排序函数1.unique()函数 unique()函数可以返回输入数组中所有不同的值(即去重后的值),并且按照从小到大的顺序排列。即unique()函数能
11、够返回由输入数组中的去重后的值组成的去重数组、去重数组的索引数组、去重数组的下标和去重值的重复数量等结果。unique()函数的示例代码example5-11见教材。2.tile()函数 tile()函数是模板numpy.lib.shape_base中的函数。该函数作用是将一个已有的数组重复一定的次数。tile()函数的示例代码example5-12见教材。5.3.2 NumPy 的去重与重复函数3.repeat()函数 repeat()函数是指定需求重复的数组元素,沿着哪个轴进行重复多少次。repeat()函数的示例代码example5-13见教材。5.3.2 NumPy 的去重与重复函数1
12、.argmin()、nanargmin()、argmax()函数 argmin()和argmax()函数作用是沿指定轴返回最小和最大元素的索引。nanargmin()函数作用是沿指定轴返回忽略了NaN的最小值的索引。argmin()、nanargmin()、argmax()函数的示例代码example5-14见教材2.nonzero()函数 nonzero()函数作用是返回输入数组中非零元素的索引。5.3.3 NumPy的搜索和计数函数3.where()函数 where()函数作用是返回输入数组中满足给定条件x的元素的索引或者是当给定的条件x为True时,返回y数据,否则返回z数据。4.ext
13、ract()函数 extract()函数作用是返回满足任何条件的元素。5.count_nonzero()计数函数 count_nonzero()函数可以统计NumPy数组中非0元素的个数。5.3.3 NumPy的搜索和计数函数 利用NumPy可以对大数据进行简单的统计分析,它包括数据文件的读取、数据列的提取、数据类型的转换和各种统计计算,还有数据的排序、搜索和计数等。现以中国历史地震数据分析为例来介绍简单的统计分析思路。见教材【例5-3】5.4 简单的统计分析项目描述项目描述 现有一个手机评论数据Mobile.csv文件,该文件的数据列包括手机品牌、价格和评分,请完成下列数据分析任务。(1)按手机价格统计评分最大值、最小值、算术平均值和中位数。(2)按手机品牌统计评分最大值、最小值、算术平均值和中位数。项目实践本章小结 本章首先介绍了使用NumPy来实现读写文件的操作,包括读写文本文件、二进制文件和多维数据文件的操作。然后介绍了NumPy中常用的统计函数,如计算最大值、最小值、算术平均值、中位数、标准差和方差等。重点介绍了运用NumPy中的排序、去重、重复、搜索和计数函数进行统计分析。最后通过简单的统计分析案例和项目实践学会综合运用。谢谢!