《统计分析软件:使用R与Python》 课件 第10章Python 数据处理_第1页
《统计分析软件:使用R与Python》 课件 第10章Python 数据处理_第2页
《统计分析软件:使用R与Python》 课件 第10章Python 数据处理_第3页
《统计分析软件:使用R与Python》 课件 第10章Python 数据处理_第4页
《统计分析软件:使用R与Python》 课件 第10章Python 数据处理_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

10.1数据文件的读写操作10.2NumPy和Pandas简介10.3Matplotlib简介第10章Python数据处理Python数据处理NumPy和Pandas简介ndarrayNumpy轴ufunc函数Series和DataFrame等Pandas数据结构Pandas数据结构提取、添加和删除数据

Matplotlib简介快速绘图数据文件的读写操作文件打开关闭open、close函数读取read类函数

写入类write类函数csv文件的读写函数数据的读取对文件数据的读取是用的read()

方法,read()

方法将返回文件中的所有内容用print打印所有内容会显示Hello,world!

,记得每次用完文件后,都要关闭文件f.close()。#设定当前工作目录importosos.chdir("E://Courses//基础课程//统计分析软件")f=open("helloworld.txt",'r')mydat=f.read()print(mydat)f.close()10.1数据文件的读取操作数据的读取也可以使用withopen()asf:

在操作后自动关闭文件withopen('helloworld.txt')asf:content=f.read()print(content)数据的读取在read()

中加入数字,可指定读取的字符数withopen('helloworld.txt')asf:content=f.read(5)print(content)数据的写入写入的操作和读取是类似的,不过用的是write()

函数,同时需要将打开文件的mode

参数设置为w

f=open("ssoft.txt",'w')f.write("统计分析软件快结束了,坚持一下!")f.close()文本文件的读取f=open(“GZdata.csv",'r')content=f.readlines()#一次性读取完所有数据f.close()print(content[0])#第一行数据print(content[1])#第二行数据通过open()

函数打开文件,返回文件对象对文件对象进行读取操作,除了前面介绍的read()

之外还有两种读取数据的方法:readline()

是每次读入一条数据的方式,readlines()

是一次性读入文件所有数据##id,name,sex,birth,title,height,weight,salary####2021A001,王天赐,男,1972/4/8,教授,165,66,30.1文本文件的读取

readlines()

读取后得到的是每行数据组成的列表,但是一行样本数据全部存储为一个字符串,并且数据读入后并没有将换行符去掉(“\r\n”或“\n”)在读入数据之后,用for循环对每一个元素去除换行符,并将每一个变量值用字符串处理方法.split()

分隔开来

.strip()

本身是一个对字符串指定字符去除的方法,但括号里参数为空的时候,就会去除\r\n\t

文本文件的读取content_new=[]#新建一个列表用于保存数据forconincontent:temp=con.strip()#去除换行符temp=temp.split(“,”)#用’,’号进行列表分割content_new.append(temp)#加入到新列表尾部print(content_new[0])print(content_new[1])##['id','name','sex','birth','title','height','weight','salary']##['2021A001','王天赐','男','1972/4/8','教授','165','66','30.1']文本文件的写入设置参数mode=‘w’,

write()、writelines()

是两个对文件对象的写入数据的方法。write()是逐次写入,writelines()可对一个列表里的所有数据一次性写入文件中如果有换行需要,则要在每条数据后增加换行符,同时用字符串.join()

的方法将每个变量数据联合成一个字符串并增加间隔符’,’。f=open("GZnew.txt",'w')#写入的两行新数据newcon=[['id','name','sex','birth','title','height','weight','salary'],['2021A040','赵匡胤','女','1992/4/8','讲师','164','66','10.1']]forconinnewcon:con=','.join(con)#用join将每个列表中元素用‘,'连接con=con+'\n'#加换行符f.write(con)f.close()CSV(逗号分隔值)文件的读取importcsvf=open("GZdata.csv",'r')reader=csv.reader(f)#用csv.reader()方法生成reader对象content_new=[]forconinreader:content_new.append(con)print(content_new[0])print(content_new[1])f.close()CSV文件还可以直接利用Python内置的

csv

模块读取数据##['id','name','sex','birth','title','height','weight','salary']##['2021A001','王天赐','男','1972/4/8','教授','165','66','30.1']CSV文件的写入引入csv模块

open()

打开文件,使用csv.writer()

作为写入器,

writerow()方法逐行写入f=open("GZnew.txt",'w')writer=csv.writer(f)#生成writer对象#写入的两行新数据newcon=[['id','name','sex','birth','title','height','weight','salary'],['2021A040','赵匡胤','女','1992/4/8','讲师','164','66','10.1']]forconinnewcon:writer.writerow(con)f.close()统计及数据分析常见软件包NumPySciPyPandasSciKit-Learn作图及可视化包matplotlibSeaborn10.2NumPy和Pandas简介NumPyNumPy是Python科学计算基础软件包。提供多维数组对象,多种派生对象(如:掩码数组、矩阵)以及用于快速操作数组的函数及API,它包括数学、逻辑、傅立叶变换、线性代数、统计运算、随机模拟等。

NumPy包的核心是ndarray对象,(目标是)比传统Python列表快50倍的数组NumPy的源代码:

/numpy/numpyAnaconda里面已经安装过NumPy。原生的Python安装:·在cmd中输入pipinstallnumpy·在官网中下载相关版本安装/pypi/numpy安装之后,我们用导入这个库>importnumpyasnp>np.__version__'1.21.5'并且查看版本:NumPy的安装NumPyNumPy数组和原生PythonArray(数组)之间有几个重要的区别:NumPy数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。NumPy数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。ndarray的创建

NumPy中的核心对象是ndarray。ndarray可以看成数组,类似于R语言的向量或者矩阵。NumPy里面所有的函数都是围绕ndarray展开的。>a=np.array([1,2,3,4])>b=np.array((5,6,7,8))>c=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]])bc------------------------------[5,6,7,8][[1,2,3,4],

[5,6,7,8],

[7,8,9,10]]ndarray对维数没有限制。[]从内到外分别为第0轴,第1轴,第2轴…c第0轴长度为3,第1轴长度为4。numpy的轴importnumpyasnpa=np.array([[1,2,3], [4,5,6]])a.sum()a.sum(axis=0)a.sum(axis=1)NumPy中许多函数和命令把轴作为参数。在二维数组中axis=0是按列的,axis=1意味着按行。NumPy中许多函数和命令把轴作为参数。思考题table=np.array([[5,3,7,1], [2,6,7,9], [4,3,2,0]])table.max()table.max(axis=0)table.max(axis=1)##9##array([5,6,7,9])##array([7,9,4])运行结果?NumPy提供了专门用于生成ndarray的函数,提高创建ndarray的速度。>a=np.arange(0,1,0.1)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])>b=np.linspace(0,1,10)array([0.,0.11111111,0.22222222,0.33333333,0.44444444,0.55555556,0.66666667,0.77777778,0.88888889,1.])>c=np.linspace(0,1,10,endpoint=False)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])>d=np.logspace(0,2,5)array([1.,3.16227766,10.,31.6227766,100.])ndarray的创建

np.empty((2,3),)创建2*3的整形型空矩阵,只分配内存np.zeros(4,)创建长度为4,值为全部为0的数组np.full(4,np.pi)创建长度为4,值为全部为pi的数组ndarray的创建

ndarray的元素具有相同的元素类型。常用的有int(整型),float(浮点型),complex(复数型)。>a=np.array([1,2,3,4],dtype=float)array([1.,2.,3.,4.])>a.dtypedtype('float64')ndarray的shape属性用来获得它的形状,也可以自己指定。>c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])>c.shape(3,4)>a=np.array([1,2,3,4])>d=a.reshape((2,2))array([[1,2],[3,4]])ndarray的属性ndarray的切片和list是一样的。>a=np.arange(10)>aarray([0,1,2,3,4,5,6,7,8,9])a[5]a[3:5]a[:5]a[:-1]----------------------------------------------------5[3,4][0,1,2,3,4][0,1,2,3,4,5,6,7,8]a[1:-1:2]a[::-1]a[5:1:-2]---------------------------------------------------[1,3,5,7][9,8,7,6,5,4,3,2,1,0][5,3]可以通过切片的对ndarray中的元素进行更改。>a[2:4]=100,101>aarray([0,1,100,101,4,5,6,7,8,9])ndarray的切片ndarray通过切片产生一个新的viewb,b和a共享同一块数据存储空间。。>b=a[3:7]>b[2]=-10ba----------------------------------------------------------------------[101,4,-10,6][0,1,100,101,4,-10,6,7,8,9]如果想改变这种情况,我们可以用列表对数组元素切片。>b=a[[3,3,-3,8]]>barray([101,101,7,8])>b[2]=1000ba----------------------------------------------------------------------([101,101,1000,8])([0,1,100,101,4,-10,6,7,8,9])ndarray的切片在Numpy中当数组进行运算时,如果两个数组的shape相同,数组相加就是两个数组的对应位相加。当数组的shape不同但满足某些条件时,则可利用NumPy的广播进行计算(较小的数组在较大的数组上“广播”,以便它们具有兼容的shape)。例:数组和标量值组合:ndarray的广播>>>a=np.array([1.0,2.0,3.0])>>>b=2.0>>>a*barray([2.,4.,6.])两个一维数组组合:np.arange(0,40,10).reshape(-1,1)+np.arange(1,4)[[123][111213][212223][313233]]ufunc是universalfunction的简称,它是一种能对数组每个元素进行运算的函数。NumPy的许多ufunc函数都是用C语言实现的,因此它们的运算速度非常快。>x=np.linspace(0,2*np.pi,10)>y=np.sin(x)>yarray([0.00000000e+00,6.42787610e-01,9.84807753e-01,.....,-2.44929360e-16])值得注意的是,对于同等长度的ndarray,np.sin()比math.sin()快。但是对于单个数值,math.sin()的速度则更快。ufunc函数NumPy提供了许多ufunc函数,它们和相应的运算符运算结果相同。>a=np.arange(0,4)>b=np.arange(1,5)>np.add(a,b)array([1,3,5,7])>a+barray([1,3,5,7])>np.subtract(a,b)#减法>np.multiply(a,b)#乘法>np.divide(a,b)#如果两个数字都为整数,则为整数除法>np.power(a,b)#乘方ufunc函数-四则运算使用==,>对两个数组进行比较,会返回一个布尔数组,每一个元素都是对应元素的比较结果。>np.array([1,2,3])<np.array([3,2,1])array([True,False,False],dtype=bool)布尔运算在NumPy中也有对应的ufunc函数。表达式ufunc函数y=x1==x2equal(x1,x2[,y])y=x1!=x2not_equal(x1,x2[,y])y=x1<x2less(x1,x2[,y])y=x1<=x2not_equak(x1,x2[,y])y=x1>x2greater(x1,x2[,y])y=x1>=x2gerater_equal(x1,x2[,y])ufunc函数-比较运算除了前面介绍的ufunc()函数之外,NumPy还提供了大量对于数组运算的函数。它们能够简化逻辑,提高运算速度。我们首先看随机数。NumPy产生随机数的模块在random里面,其中有大量的分布。>fromnumpyimportrandomasnr>np.set_printoptions(precision=2)#显示小数点后两位数>r1=nr.rand(4,3)[[0.87,0.42,0.34],[0.25,0.87,0.42],[0.49,0.18,0.44],[0.53,0.23,0.81]]>r2=nr.poisson(2.0,(4,3))[[3,1,5],[2,2,3],[2,4,4],[2,2,3]]ufunc函数-随机数生成rand0到1之间的随机数normal正太分布的随机数randint制定范围内的随机整数uniform均匀分布randn标准正太的随机数poisson泊松分布choice随机抽取样本shuffle随机打乱顺序ufunc函数-随机数生成NumPy在均值等方面常用的统计函数如下:>np.random.seed(42)>a=np.random.randint(0,10,size=(4,5))>np.sum(a)96函数名功能sum求和average加权平均数var方差mean期望std标准差product连乘积ufunc函数-统计函数其他统计函数有:unique(),bicount(),histogram()。>np.random.seed(42)>a=np.random.randint(0,8,10)>np.unique(a)anp.unique(a)------------------------------------------------[6,3,4,6,2,7,4,4,6,1][1,2,3,4,6,7]unique有两个参数,return_index=True同时返回原始数组中的下标,return_inverse=True表示原始数据在新数组的下标。>x,index=np.unique(a,return_index=True)xindexa[index]------------------------------------------------------[1,2,3,4,6,7][9,4,1,2,0,5][1,2,3,4,6,7]ufunc函数-统计函数>x,rindex=np.unique(a,return_inverse=True)rindexx[rindex]------------------------------------------------------------[4,2,3,4,1,5,3,3,4,0][6,3,4,6,2,7,4,4,6,1]bincount()对非负整数数组中的各个元素出现的次数进行统计,返回数组中的第i个元素是整数i出现的次数。>a=np.array([6,3,4,6,2,7,4,4,6,1])>np.bincount(a)array([0,1,1,1,3,0,3,1])>x=np.array([0,1,2,2,1,1,0])>w=np.array([0.1,0.3,0.2,0.4,0.5,0.8,1.2])>np.bincount(x,w)array([1.3,1.6,0.6])ufunc函数-统计函数histogram()对以为数组进行直方图统计,其参数为:histogram(a,bins=10,range=None,weights=None)函数返回两个一维数组,hist是每个区间的统计结果,bin_edges返回区间的边界值。>a=np.random.rand(100)>np.histogram(a,bins=5,range=(0,1))(array([28,18,17,19,18]),array([0.,0.2,0.4,0.6,0.8,1.]))>np.histogram(a,bins=[0,0.4,0.8,1.0])(array([46,36,18]),array([0.,0.4,0.8,1.]))ufunc函数-统计函数PandasPandas

-核心数据分析支持库,提供了快速、灵活、明确的数据结构。

适用于处理以下类型的数据:与SQL或Excel表类似的,含异构列的表格数据;有序和无序(非固定频率)的时间序列数据;带行列标签的矩阵数据,包括同构或异构型数据;任意其它形式的观测、统计数据集,数据转入Pandas数据结构时不必事先标记。PandasPandas的主要数据结构是Series(一维数据)与DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。对于R用户,DataFrame提供了比R语言data.frame更丰富的功能。Pandas基于NumPy开发,可以与其它第三方科学计算支持库完美集成。Pandas下面仅列出了它的部分优势

把Python和NumPy数据结构里不规则、不同索引的数据轻松地转换为DataFrame对象成熟的IO工具:读取文本文件(CSV等支持分隔符的文件)、Excel文件、数据库等来源的数据,利用超快的

HDF5

格式保存/加载数据;时间序列:支持日期范围生成、频率转换、移动窗口统计、移动窗口线性回归、日期位移等时间序列功能。PandasPandas速度很快。Pandas的很多底层算法都用Cython优化过。然而,为了保持通用性,必然要牺牲一些性能,如果专注某一功能,完全可以开发出比Pandas更快的专用工具。Pandas是statsmodels的依赖项,因此,Pandas也是Python中统计计算生态系统的重要组成部分。Pandas基础数据结构本节介绍Pandas基础数据结构,包括各类对象的数据类型、索引、轴标记、对齐等基础操作。首先,导入NumPy和Pandas:In[1]:importnumpyasnp

In[2]:importpandasaspdPandas基础数据结构SeriesSeries

是带标签的一维数组,可存储整数、浮点数、字符串、Python对象等类型的数据。轴标签统称为索引。调用

pd.Series

函数即可创建Series:>>>s=pd.Series(data,index=index)上述代码中,data

支持以下数据类型:Python字典多维数组标量值(如,5)index

是轴标签列表。Pandas基础数据结构-series多维数组:data

是多维数组时,index

长度必须与

data

长度一致。没有指定

index

参数时,创建数值型索引,即

[0,...,len(data)-1]。In[3]:s=pd.Series(np.random.randn(5),index=['a',

'b',

'c',

'd',

'e'])

In[4]:sOut[4]:a0.469112b-0.282863c-1.509059d-1.135632e1.212112

dtype:float64In[5]:s.indexOut[5]:Index(['a',

'b',

'c',

'd',

'e'],dtype='object')

In[6]:pd.Series(np.random.randn(5))

Out[6]:

0-0.173215

1

0.119209

2-1.044236

3-0.861849

4-2.104569

dtype:float64Pandas基础数据结构-series字典:Series可以用字典实例化:In[7]:d={'b':

1,

'a':

0,

'c':

2}

In[8]:pd.Series(d)

Out[8]:b1a0c2

dtype:int64注意:data

为字典,且未设置

index

参数时,如果Python版本>=3.6且Pandas版本>=0.23,Series

按字典的插入顺序排序索引;否则按字典的键按字母顺序排序。Pandas基础数据结构-series如果设置了

index

参数,则按索引标签In[9]:d={'a':

0.,

'b':

1.,

'c':

2.}

In[10]:pd.Series(d)

Out[10]:

a0.0

b1.0

c2.0

dtype:float64In[11]:pd.Series(d,index=['b',

'c',

'd',

'a'])

Out[11]:

b1.0

c2.0

dNaNa0.0

dtype:float64Pandas用

NaN(NotaNumber)表示缺失数据Pandas基础数据结构-seriesSeries

操作与

ndarray

类似,支持大多数NumPy函数,还支持索引切片。Series类似固定大小的字典,可以用索引标签提取值或设置值。Series和多维数组的主要区别:Series之间的操作会自动基于标签对齐数据。因此,不用顾及执行计算操作的Series是否有相同的标签。Pandas数据结构-DataFrameDataFrame

是由多种类型的列构成的二维标签数据结构,类似于Excel、SQL表,或Series对象构成的字典。DataFrame是最常用的Pandas对象,与Series一样,DataFrame支持多种类型的输入数据:一维ndarray、列表、字典、Series字典二维numpy.ndarraySeriesDataFrame结构多维数组或记录多维数组用Series字典或字典生成DataFrame

生成的索引是每个

Series

索引的并集。先把嵌套字典转换为Series。如果没有指定列,DataFrame的列就是字典键的有序列表。>d={'one':pd.Series([1.,

2.,

3.],index=['a',

'b',

'c']),pd.Series([1.,

2.,

3.,

4.],index=['a',

'b',

'c',

'd'])}>df=pd.DataFrame(d)>dfonetwoa1.0

1.0

b2.0

2.0c3.0

3.0

dNaN4.0用Series字典或字典生成DataFrame

In[40]:pd.DataFrame(d,index=['d',

'b',

'a'])

Out[40]:onetwodNaN4.0b2.02.0a1.01.0In[41]:pd.DataFrame(d,index=['d','b','a'],columns=['two','three'])Out[41]:twothreed4.0NaNb2.0NaNa1.0NaNindex

columns

属性分别用于访问行、列标签.用多维数组字典、列表字典生成DataFrame

多维数组的长度必须相同。如果传递了索引参数,index

的长度必须与数组一致。In[44]:d={'one':

[1.,

2.,

3.,

4.],

'two':

[4.,

3.,

2.,

1.]}In[46]:pd.DataFrame(d,index=['a',

'b',

'c',

'd'])Out[46]:

onetwoa1.0

4.0

b2.0

3.0

c3.0

2.0

d4.0

1.0用多维数组字典、列表字典生成DataFrame

多维数组的长度必须相同。如果传递了索引参数,index

的长度必须与数组一致。In[44]:d={'one':

[1.,

2.,

3.,

4.],

'two':

[4.,

3.,

2.,

1.]}In[45]:pd.DataFrame(d)

Out[45]:

onetwo0

1.0

4.0

1

2.0

3.0

2

3.0

2.0

3

4.0

1.0如果没有传递索引参数,生成的结果是

range(n),n

为数组长度。用结构多维数组或记录多维数组生成DataFrame

本例与数组字典的操作方式相同。

In[47]:data=np.zeros((2,

),dtype=[('A',

'i4'),

('B',

'f4'),

('C',

'a10')])

In[48]:data[:]=[(1,

2.,

'Hello'),

(2,

3.,

"World")]

In[49]:pd.DataFrame(data)

Out[49]:

ABC0

1

2.0

b'Hello'

1

2

3.0

b'World'

In[50]:pd.DataFrame(data,index=['first',

'second'])Out[50]:

ABCfirst1

2.0

b'Hello'

second2

3.0

b'World'In[51]:pd.DataFrame(data,columns=['C',

'A',

'B'])

Out[51]:

CAB0

b'Hello‘

1

2.0

1

b'World'

2

3.0用列表字典生成DataFrame

In[52]:data2=[{'a':

1,

'b':

2},

{'a':

5,

'b':

10,

'c':

20}]

In[53]:pd.DataFrame(data2)

Out[53]:

abc0

1

2NaN1

5

10

20.0

In[54]:pd.DataFrame(data2,index=['first',

'second'])Out[54]:

abcfirst1

2NaNsecond5

10

20.0

In[55]:pd.DataFrame(data2,columns=['a',

'b'])

Out[55]:

ab0

1

2

1

5

10提取、添加、删除列

DataFrame就像带索引的Series字典,提取、设置、删除列的操作与字典类似:

In[39]:dfOut[39]:

onetwoa1.0

1.0

b2.0

2.0c3.0

3.0

dNaN4.0In[61]:df['one']

Out[61]:

a1.0

b2.0

c3.0

dNaNName:one,

dtype:float64In[62]:df['three']=df['one']*df['two']In[63]:df['flag']=df['one']>2

In[64]:dfOut[64]:

onetwothreeflaga1.0

1.0

1.0

False

b2.0

2.0

4.0

False

c3.0

3.0

9.0

True

dNaN4.0NaNFalse提取、添加、删除列

删除(del、pop)列的方式也与字典类似In[65]:

deldf['two']

In[66]:three=df.pop('three')

In[67]:dfOut[67]:

oneflaga1.0

False

b2.0

False

c3.0

True

dNaNFalseIn[64]:dfOut[64]:

onetwothreeflaga1.0

1.0

1.0

False

b2.0

2.0

4.0

False

c3.0

3.0

9.0

True

dNaN4.0NaNFalse索引/选择

索引基础用法如下:

选择行返回Series,索引是DataFrame的列

In[83]:df.loc['b']Out[83]:

one2

bar2

flagFalse

foobarone_trunc2

Name:b,dtype:

object转置

类似于多维数组,T

属性(即

transpose

函数)可以转置DataFrame:

In[103]:df[:5].TOut[103]:

2000-01-01

2000-01-02

2000-01-03

2000-01-04

2000-01-05A-1.226825-0.727707

0.695775-1.110336-0.732339

B0.769804-0.121306

0.341734-0.619976

0.687738

C-1.281247-0.097883

0.959726

0.149748

0.176444Pandas读取文件import

numpy

as

npimportscipyasspimportpandasaspdimportmatplotlibasmplimportseabornassns#读取CSV数据df=pd.read_csv("/examples/python/data_analysis/Salaries.csv")#读取其他格式数据pd.read_excel('myfile.xlsx',sheet_name='Sheet1',index_col=None,na_values=['NA'])pd.read_stata('myfile.dta')pd.read_sas('myfile.sas7bdat')pd.read_hdf('myfile.h5','df')探索数据框df.head()df.describe()PandasDataFrame数据类型

Pandas类型原始Python类型描述objectstringThemostgeneraldtype.Willbeassignedtoyourcolumnifcolumnhasmixedtypes(numbersandstrings).int64intNumericcharacters.64referstothememoryallocatedtoholdthischaracter.float64floatNumericcharacterswithdecimals.IfacolumncontainsnumbersandNaNs(seebelow),pandaswilldefaulttofloat64,incaseyourmissingvaluehasadecimal.datetime64,timedelta[ns]N/AValuesmeanttoholdtimedata.Lookintothesefortimeseriesexperiments.DataFrame数据类型#Checkaparticularcolumntypedf['salary'].dtype#Checktypesforallthecolumnsdf.dtypesDataFrames属性df.attribute描述dtypeslistthetypesofthecolumnscolumnslistthecolumnnamesaxeslisttherowlabelsandcolumnnamesndimnumberofdimensionssizenumberofelementsshapereturnatuplerepresentingthedimensionalityvaluesnumpyrepresentationofthedataDataFrames方法df.method()描述head([n]),tail([n])first/lastnrowsdescribe()generatedescriptivestatistics(fornumericcolumnsonly)max(),min()returnmax/minvaluesforallnumericcolumnsmean(),median()returnmean/medianvaluesforallnumericcolumnsstd()standarddeviationsample([n])returnsarandomsampleofthedataframedropna()dropalltherecordswithmissingvalues提取数据框的列使用列变量名称df['sex']将列变量名称作为属性df.sex数据框筛选df_sub=df[df['salary']>120000]>greater;>=greaterorequal;<less;<=lessorequal;==equal;!=notequal;数据框筛选methodloc方法10.3Matplotlib简介

matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

展示页面的地址:/gallery.html快速绘图快速绘图matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表。(matplotlib_simple_plot.py)

pylab模块matplotlib还提供了名为pylab的模块,其中包括了许多numpy和pyplot中常用的函数,方便用户快速进行计算和绘图,可以用于IPython中的快速交互式使用。

快速绘图matplotlib中的快速绘图的函数库可以通过如下语句载入:接下来调用figure创建一个绘图对象,并且使它成为当前的绘图对象。通过figsize参数可以指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80=640像素。importmatplotlib.pyplotaspltplt.figure(figsize=(8,4))快速绘图也可以不创建绘图对象直接调用接下来的plot函数直接绘图,matplotlib会自动创建一个绘图对象。

如果需要同时绘制多幅图表的话,可以是给figure传递一个整数参数指定图标的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象。下面的两行程序通过调用plot函数在当前的绘图对象中进行绘图:plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.plot(x,z,"b--",label="$cos(x^2)$")快速绘图plot函数的调用方式很灵活,第一句将x,y数组传递给plot之后,用关键字参数指定各种属性:•label:给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加''$''符号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。•color:指定曲线的颜色•linewidth:指定曲线的宽度第三个参数‘’b--``指定曲线的颜色和线型plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.plot(x,z,"b--",label="$cos(x^2)$“)快速绘图接下来通过一系列函数设置绘图对象的各个属性:•xlabel/ylabel:设置X轴/Y轴的文字•title:设置图表的标题•ylim:设置Y轴的范围•legend:显示图示最后调用plt.show()显示出创建的所有绘图对象。plt.xlabel("Time(s)")plt.ylabel("Volt")plt.title("PyPlotFirstExample")plt.ylim(-1.2,1.2)plt.legend()快速绘图

importnumpyasnpimportmatplotlib.pyplotasplt

x=np.linspace(0,10,1000)y=np.sin(x)z=np.cos(x**2)

plt.figure(figsize=(8,4))plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.plot(x,z,"b--",label="$cos(x^2)$")plt.xlabel("Time(s)")plt.ylabel("Volt")plt.title("PyPlotFirstExample")plt.ylim(-1.2,1.2)plt.legend()plt.show()快速绘图快速绘图还可以调用plt.savefig()将当前的Figure对象保存成图像文件,图像格式由图像文件的扩展名决定。下面的程序将当前的图表保存为“test.png”,并且通过dpi参数指定图像的分辨率为120,因此输出图像的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论