Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.1Pandas基本数据结构-6.2数据分析的基本流程_第1页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.1Pandas基本数据结构-6.2数据分析的基本流程_第2页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.1Pandas基本数据结构-6.2数据分析的基本流程_第3页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.1Pandas基本数据结构-6.2数据分析的基本流程_第4页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.1Pandas基本数据结构-6.2数据分析的基本流程_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

Python财经应用:编程基础、数据分析与可视化第六章Pandas数据处理分析中国农业大学李辉Pandas数据处理分析01Pandas基本数据结构02数据分析的基本流程03数据的导入与导出04数据预处理05数据分析方法06DataFrame的合并与连接Pandas数据处理分析01Pandas基本数据结构02数据分析的基本流程03数据的导入与导出04数据预处理05数据分析方法06DataFrame的合并与连接6.1Pandas基本数据结构第六章Pandas数据处理分析Pandas

数据处理分析在财经数据分析领域,Pandas库是Python核心数据分析工具,功能强大。本章节系统介绍Pandas在财经数据分析中的应用,包括数据结构定义、数据导入导出、预处理以及高级分析方法等完整流程。本章先讲解Series和DataFrame数据结构定义与操作,为财经数据存储管理提供方案;再阐述数据导入导出技术,实现不同格式间无缝转换。数据预处理部分探讨缺失值、异常值、重复值处理方法,为后续分析奠定基础。数据分析方法涵盖基本统计、分组、分布等技术,揭示数据规律和业务洞察。本章节为财经数据分析师提供系统化工具箱,助力高效决策支持。Pandas基本数据结构Pandas是一个开源的Python库,它基于NumPy和Matplotlib构建,并被誉为数据分析领域的“三剑客”之一(NumPy、Matplotlib、Pandas)。Pandas已逐渐成为Python数据分析中不可或缺的高级工具,旨在成为一个强大且灵活的数据分析工具,能够支持多种编程语言。Pandas的名称源自于“面板数据”(paneldsata)和“数据分析”(dataanalysis)两个词的结合。在经济学领域,PanelData指的是多维数据集的一种。Pandas最初被应用于金融量化交易领域,如今其应用范围已广泛扩展至农业、工业、交通等多个行业。Pandas主要包含两种数据结构:Series(系列)和DataFrame(数据框)。Series用于处理带标签的一维数组,而DataFrame用于处理带标签的二维数组。要使用Pandas库,首先需要执行导入操作:importpandasaspd#导入pandas模块Pandas基本数据结构——Series数据结构定义与操作Series对象是Pandas库的核心构件之一,它由两部分要素构成:索引(index)和值(values)。索引充当值的标签,为数据元素提供了一种标识方式。默认情况下:Series对象使用从0开始的正整数作为索引,这些整数代表了数据在序列中的位置。Series也可以自定义索引,赋予其更具含义的标识符,从而形成一种类似于字典的“键-值”对结构,其中索引充当键的角色。Pandas基本数据结构——Series数据结构定义与操作1.Series的工作原理Series是Pandas库中的基础数据结构,它在NumPy的ndarray基础上进行了功能扩展。Series不仅支持通过下标索引访问元素,也支持通过自定义的索引标签来存取数据。每个Series实例本质上是由两个数组构成:一个用于存储索引标签,另一个用于存储对应的值。2.索引(index)的工作原理索引是一个专门的索引对象,它负责维护数据的标签信息。在创建Series对象时,如果没有明确指定索引,Pandas会自动生成一个基于位置的索引,用以表示数据项的顺序。Pandas基本数据结构——Series数据结构定义与操作3.值(values)的工作原理值是一个数组,它负责存储Series对象中的数据元素。这个数组是Series数据内容的载体,包含了所有实际的数据点。通过右图来描述Series的结构:右图展示的是Series结构表现形式,其索引位于左边,数据位于右边。Pandas基本数据结构——Series数据结构定义与操作利用Python列表、元组、字典、range对象和一维数组等可以创建一个Series对象。语法格式如下。Series(data,index,dtype)参数说明:data:Series中的数据。index:自定义的索引标识符。标识符的个数要与数据个数相同。dtype:指定数据类型。创建系列对象后,可以使用索引、切片或列表作为下标访问系列中的元素。Pandas基本数据结构——Series数据结构定义与操作【例6-1】利用Pandas的Series()方法创建Series对象与元素访问。

importpandasaspd#Series默认索引使用从0开始的数字作为索引s_obj_1=pd.Series(data=['库存现金','银行存款','其他货币资金'],name='货币资金')print(s_obj_1)#使用自定义索引创建Seriess_obj_2=pd.Series(data=['库存现金','银行存款','其他货币资金'],index=[1001,1002,1003],name='货币资金')print(s_obj_2)#使用字典创建Series,字典的键会被当作索引输出s_obj_3=pd.Series({'1001':'库存现金','1002':'银行存款','1003':'其他货币资金'})print(s_obj_3)print(s_obj_3['1001'])Pandas基本数据结构——Series数据结构定义与操作

0库存现金1银行存款2其他货币资金Name:货币资金,dtype:object1001库存现金1002银行存款1003其他货币资金Name:货币资金,dtype:object1001库存现金1002银行存款1003其他货币资金dtype:object库存现金运行结果如下:Pandas基本数据结构——Series数据结构定义与操作【例6-2】Series对象数据的修改与运算。

importpandasaspdindex=['应收账款','应付账款','实收资本']data=[8500,39000,125000]s_obj=pd.Series(data=data,index=index,name='会计科目')print(s_obj)s_obj['应收账款']=85000#修改元素s_obj['库存现金']=82000 #添加元素print(s_obj)print(s_obj.max())#查找元素中的最大值print(round(s_obj.mean(),1))#求均值,保留1位小数Pandas基本数据结构——Series数据结构定义与操作

应收账款8500应付账款39000实收资本125000Name:会计科目,dtype:int64应收账款85000应付账款39000实收资本125000库存现金82000Name:会计科目,dtype:int6412500082750.0运行结果如下:Pandas基本数据结构——Series数据结构定义与操作由上述例子可以看出,首先Series()方法中通过传入一个列表来创建一个Series类对象,从输出结果可以看出,左边一列是索引右边一列是数据,数据的类型是根据传入的列表参数中元素的类型推断出来的,即object。可以在创建Series类对象的时候,为数据手动指定索引。除了使用列表构建Series类对象外,还可以使用dict进行构建。结果中输出的dtype,是DataFrame数据的数据类型,int为整型,后面的数字表示位数。利用Python内置函数、运算符,以及Series对象方法操作Series对象。Pandas基本数据结构——Series数据结构定义与操作Series对象的索引可以是一个时间序列。使用Pandas库中的date_range函数可以创建时间序列对象(DatetimeIndex)。语法格式如下:date_range(start,end,periods,freq)功能:根据指定的起止时间,创建时间序列对象。参数说明如下:start、end:时间序列的起始时间和终止时间。periods:时间序列中包含的数据数量。freq:时间间隔,默认为'D'(天)。间隔可以是'W'(周)、'H'(小时)等。start、end、periods三个参数只需要指定其中两个(三选二)。Pandas基本数据结构——Series数据结构定义与操作【例6-3】创建时间序列对象示例。

importpandasaspd#间隔1天date_index_1=pd.date_range(start='20240204',end='20240206',freq='D')print("间隔一天的时间序列:\n",date_index_1)#间隔6小时date_index_2=pd.date_range(start='20240204',end='20240205',freq='6h')print("间隔6小时的时间序列:\n",date_index_2)#间隔1个月date_index_3=pd.date_range(start='20240204',freq='ME',periods=4)print("间隔一个月的时间序列:\n",date_index_3)height=[20,25,30,40]ser_height=pd.Series(height,index=date_index_3)#时间序列作为索引print("产品销售数量:\n",ser_height)Pandas基本数据结构——Series数据结构定义与操作

间隔一天的时间序列:DatetimeIndex(['2024-02-04','2024-02-05','2024-02-06'],dtype='datetime64[ns]',freq='D')间隔6小时的时间序列:DatetimeIndex(['2024-02-0400:00:00','2024-02-0406:00:00','2024-02-0412:00:00','2024-02-0418:00:00','2024-02-0500:00:00'],dtype='datetime64[ns]',freq='6h')间隔一个月的时间序列:DatetimeIndex(['2024-02-29','2024-03-31','2024-04-30','2024-05-31'],dtype='datetime64[ns]',freq='ME')产品销售数量:2024-02-29202024-03-31252024-04-30302024-05-3140Freq:ME,dtype:int64运行结果如下:Pandas基本数据结构——DataFrame数据结构定义与操作DataFrame是一个二维表格结构,包含index(行索引)、columns(列索引)和values(值)三部分。DataFrame中的一行称为一条记录(或样本),一列称为一个字段(或属性)。DataFrame中的每一列都是一个Series类型,存储相同数据类型和语义的数据。DataFrame中每行的前面和每列的上面都有一个索引,用来标识一行或一列,前者称为index,后者称为columns,如图所示。默认使用正整数作为索引(从0开始),也可以自定义标识符,作为行标签和列标签。列标签通常也称为“字段名”或“列名”。Pandas基本数据结构——DataFrame数据结构定义与操作1.创建DataFrame利用Python字典、嵌套列表和二维数组等对象可以创建一个DataFrame对象。也可以通过导入文件的方法创建。语法格式如下:DataFrame(data,index,columns,dtype)pandas.DataFrame(data=None,index=None,columns=None,dtype=None)参数说明如下:data:表示数据,可以使ndarray数组、series对象、列表、字典等。index:表示行标签(索引)。如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引。columns:表示列标签(索引)。如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引。dtype:每一列数据的数据类型,与Python数据类型有所不同。Pandas基本数据结构——DataFrame数据结构定义与操作2.查看DataFrame的基本信息通过DataFrame对象的属性可以查看DataFrame的行标签、列标签、值项、数据类型、行数和列数以及DataFrame的形状等信息。Pandas基本数据结构——访问DataFrame数据元素DataFrame是一个二维表格结构,与二维数组类似,可以通过下标或布尔型索引访问。1.下标访问(1)语法格式一DataFrame对象名.loc[行下标,列下标]DataFrame对象名.iloc[行下标,列下标]参数说明如下:可以使用索引、标签、切片或列表作为下标。loc表示完全基于标签名的选择方式。iloc表示完全基于位置索引的选择方式。如果选择所有行,行下标可表示为“:”。如果选择所有列,列下标可表示为“:”,也可以直接省略列下标。Pandas基本数据结构——访问DataFrame数据元素DataFrame是一个二维表格结构,与二维数组类似,可以通过下标或布尔型索引访问。1.下标访问(2)语法格式二DataFrame对象名.at[行下标,列下标]DataFrame对象名.iat[行下标,列下标]在Pandas库中,DataFrame对象提供了两种不同的方法来访问或修改单个数据点,分别是.at和.iat。这两种方法的主要区别在于它们如何定位数据:.at是用于通过行标签和列标签来访问或修改单个数据点的属性。它适用于当你知道具体的行和列的标签时。使用.at时,行和列的下标必须是字符串或者可以转换为标签的对象。.iat是用于通过行和列的整数位置(即下标)来访问或修改单个数据点的属性。它适用于当你知道具体的行和列的整数位置时。使用.iat时,行和列的下标必须是整数。这种方式用于选择DataFrame中指定位置的一个值,只能用位置索引或标签作为下标。Pandas基本数据结构——访问DataFrame数据元素DataFrame是一个二维表格结构,与二维数组类似,可以通过下标或布尔型索引访问。1.下标访问(3)语法格式三DataFrame对象名[下标]这种方式用于选择整行或整列数据。下标为切片,表示选择若干行;下标为标签或标签列表,表示选择若干列。Pandas基本数据结构——访问DataFrame数据元素【例6-7】iat[]与.iat[]获取单个值。

importpandasaspdpd.set_option('display.unicode.east_asian_width',True)data=[['库存现金','资产','借',2000],['银行存款','资产','借',3000],['应付账款','负债','贷',1500],['实收资本','所有者权益','贷',50000]]index=['1001','1002','2202','4001']columns=['科目名称','科目类别','借贷方向','年初余额']df=pd.DataFrame(data=data,index=index,columns=columns)print('原数据:\n',df)print(df.at['1002','年初余额'])print(df.iat[1,3])Pandas基本数据结构——访问DataFrame数据元素运行结果如下:

原数据:科目名称科目类别借贷方向年初余额1001库存现金资产借20001002银行存款资产借30002202应付账款负债贷15004001实收资本所有者权益贷5000030003000iat和at仅适用于标量,因此非常快。iat和at仅给出单个值输出。Pandas基本数据结构——访问DataFrame数据元素DataFrame是一个二维表格结构,与二维数组类似,可以通过下标或布尔型索引访问。2.布尔型索引访问(1)语法格式一DataFrame对象名.loc[布尔型索引,列下标](2)语法格式二DataFrame对象名[布尔型索引]Pandas基本数据结构——访问DataFrame数据元素布尔型索引是指通过一组布尔值(True或False)对DataFrame进行取值操作,以选出满足条件的元素。通常是利用条件运算得到一组布尔值,条件表达式中可以使用关系运算符、逻辑运算符以及Pandas提供的条件判断方法,如表所示。条件运算符或数据框对象的方法说明比较》、《、=、》=、《<=、!=比较运算(大于、小于、等于、大于等于、小于等于、不等于)确定范围between(n,m)在

n~m范围内,包含n和m确定集合isin(L)属于列表L中的元素空值isnull()是空值(NaN)多重条件&与运算,两个条件同时成立,结果为

True|或运算,有一个条件成立时,结果为True~非运算,对条件取反Pandas基本数据结构——访问DataFrame数据元素【例6-8】利用布尔型索引获取数据。

importpandasaspdpd.set_option('display.unicode.east_asian_width',True)data_dict={'科目代码':['1001','1002','2202','4001'],'科目名称':['库存现金','银行存款','应付账款','实收资本'],'科目类别':['资产','资产','负债','所有者权益'],'借贷方向':['借','借','贷','贷'],'年初余额':[20000,30000,1500,50000]}#创建字典df=pd.DataFrame(data_dict)#基于字典创建DataFrame对象print('年初余额高于2000:\n',df[df.年初余额>2000])print('年初余额在30000和50000之间:\n',df[df.年初余额.between(30000,50000)])Pandas基本数据结构——访问DataFrame数据元素运行结果如下:

年初余额高于2000:科目代码科目名称科目类别借贷方向年初余额01001库存现金资产借2000011002银行存款资产借3000034001实收资本所有者权益贷50000年初余额在30000和50000之间:科目代码科目名称科目类别借贷方向年初余额11002银行存款资产借3000034001实收资本所有者权益贷50000Pandas基本数据结构——修改与删除DataFrame数据元素通过赋值语句,可以直接修改DataFrame中的数据或者添加新的数据列。若要删除行或删除列,可以使用DataFrame对象的drop()方法。语法格式如下:drop(labels,axis,index,columns,inplace)参数说明如下:labels:被删除的行索引或列索引名称,可传一个标签或标签列表。axis:0表示行,1表示列,默认为0。index:被删除行的行索引。columns:被删除列的列索引。inplace:布尔型参数。默认inplace=False,表示返回一个新的DataFrame对象,当前DataFrame对象不受影响;inplace=True,表示从当前DataFrame对象中直接删除(即原地删除,返回空对象None)。Pandas基本数据结构——DataFrame数据元素的排序DataFrame对象既可以按行索引或列索引排序,也可以按数值排序。1.按索引排序:使用DataFrame对象的sort_index()方法按行索引或列索引排序。语法格式如下:sort_index(axis,ascending,inplace)参数说明如下:axis:排序的轴向。默认axis=0,按index排序;axis=1,按columns排序。ascending:排序方式。默认ascending=True,按升序排序;ascending=False,按降序排序。inplace:是否为原地排序。默认inplace=False,返回新的DataFrame对象。需要注意的是,当对DataFrame进行排序操作时,要注意轴的方向。如果没有指定axis参数的值,则默认会按照行索引进行排序;如果指定axis=1,则会按照列索引进行排序。Pandas基本数据结构——DataFrame数据元素的排序DataFrame对象既可以按行索引或列索引排序,也可以按数值排序。2.按值项排序:使用DataFrame对象的sort_values()方法按DataFrame中的数值排序。语法格式如下:sort_values(by,axis,ascending,inplace,na_position)参数说明如下:by:排序依据。既可以是一项数据,也可以是一个列表(表示多级排序)。axis:排序的轴向。默认axis=0,纵向排序;axis=1,横向排序。ascending:排序方式,默认ascending=True(升序)。na_position:空值排列的位置。默认na_position='last',表示空值排在最后面;na_position='first'表示空值排在最前面。Pandas基本数据结构——DataFrame数据元素的排序

importpandasaspdpd.set_option('display.unicode.east_asian_width',True)data=[['库存现金','资产','借',2000],['应付账款','负债','贷',1500],['银行存款','资产','借',3000],['实收资本','所有者权益','贷',50000]]index=['1001','2202','1002','4001']columns=['科目名称','科目类别','借贷方向','年初余额']df=pd.DataFrame(data=data,index=index,columns=columns)print('原数据:\n',df)df_1=df.sort_values(by='年初余额',ascending=False)#按列值降序排列print("按索引降序排列:\n",df_1

温馨提示

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

评论

0/150

提交评论