Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.3数据的导入与导出_第1页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.3数据的导入与导出_第2页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.3数据的导入与导出_第3页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.3数据的导入与导出_第4页
Python财经应用-编程基础、数据分析与可视化课件 第6章-Pandas数据处理分析-6.3数据的导入与导出_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

Python财经应用:编程基础、数据分析与可视化第六章Pandas数据处理分析中国农业大学李辉Pandas数据处理分析01Pandas基本数据结构02数据分析的基本流程03数据的导入与导出04数据预处理05数据分析方法06DataFrame的合并与连接Pandas数据处理分析01Pandas基本数据结构02数据分析的基本流程03数据的导入与导出04数据预处理05数据分析方法06DataFrame的合并与连接6.3Pandas基本数据结构第六章Pandas数据处理分析数据的导入与导出——数据的导入利用Pandas进行数据分析,首先需要将外部数据源导入DataFrame数据。数据处理和数据分析的中间结果或最终结果也需要保存到文件中。数据通常可以存储在Excel、CSV、TXT、JSON、HTML等格式的文件中,或者存储在数据库中。Pandas提供了导入不同文件的方法:1.导入数据集(1)使用read_excel函数导入Excel数据文件read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None)功能:读入Excel文件中的数据并返回一个DataFrame对象。数据的导入与导出——数据的导入参数说明:io:要读取的Excel文件,可以是字符串形式的文件路径。sheet_name:要读取的工作表,可以用序号或工作表名称表示。默认sheet_name=0,表示读取第一张工作表。header:工作表的哪一行作为DataFrame对象的列名。默认header=0,表示工作表的第一行(表头行)作为列名;如果工作表没有表头行,则必须显式指定header=None。names:DataFrame对象的列名,如果工作表没有表头行,则可以使用names设置列名;如果工作表有表头行,则可以使用names替换原来的列名。index_col:使用工作表的哪一列或哪几列(列序号表示)作为DataFrame的行索引(工作表的列序号从0开始)。usecols:读取Excel工作表的哪几列,默认读取工作表中的所有列。read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None)数据的导入与导出——数据的导入1.导入数据集(2)使用read_csv函数导入CSV格式的数据文件read_csv(filepath_or_buffer,sep,header,names,index_col,usecols)功能:读入CSV格式的文件中的数据并返回一个DataFrame对象。参数说明:filepath_or_buffer:要读取的数据文件。sep:数据项之间的分隔符。默认是逗号。其他参数的含义与read_excel()函数的相同。数据的导入与导出——数据的导入

importpandasaspd#导入所有列df_order=pd.read_csv(r'./data/Online_Retail_Data.csv')print(df_order.head())#查看前5行记录#指定第一列(InvoiceNo)作为DataFrame的行索引df_order_index=pd.read_csv(r'./data/Online_Retail_Data.csv',index_col=0)print(df_order_index.tail())#查看后5行记录#导入csv文件,并指定字符编码df_order_encode=pd.read_csv(r'./data/Online_Retail_Data.csv',encoding='gbk')#指定编码print(df_order_encode.head()) #查看前5行记录【例6-13】导入Online_Retail_Data.csv文件中的数据,生成DataFrame对象。数据的导入与导出——数据的导入1.导入数据集(3)使用read_table()函数导入通用分隔符格式的数据文件通用分隔符格式的文件是指每一行的数据项之间可以使用逗号、空格、Tab键等通用分隔符分隔,如TXT格式的文件。read_table(filepath_or_buffer,sep,header,names,index_col,usecols)功能:读入通用分隔符格式的文件中的数据并返回一个DataFrame对象。参数说明:filepath_or_buffer:要读取的数据文件。sep:数据项之间的分隔符。默认是Tab键。其他参数的含义与read_csv()函数的相同。数据的导入与导出——数据的导入1.导入数据集(4)使用read_sql()函数导入数据库表将数据库中的数据导入DataFrame需要先建立与数据库的连接。Pandas提供了sqlalchemy方式与MySOL、PostgresSQL、Oracle、MSSQLServer、SQLite等主流数据库建立连接。建立连接后,即可使用read_sql()函数导入数据库中的数据。read_sql(sql,con,index_col)功能:读入SQL查询结果集或数据库表中的数据并返回一个DataFrame对象。参数说明:sql:SQL查询语句或数据库表名。con:SQLAlchemy连接对象。index_col:使用数据库表的哪一列或哪几列作为DataFrame的行索引。数据的导入与导出——数据的导入2.查看数据集导入数据集后,可以使用DataFrame对象的相关属性和方法了解数据集的基本信息、考查数据分布情况等,常用操作如表所示。方法功能方法shape查看数据框的形状shapehead(n)查看数据框中前n条记录。默认,n=5head(n)tail(n)查看数据框中最后n条记录。默认,n=5tail(n)数据的导入与导出——数据的导入2.查看数据集导入数据集后,可以使用DataFrame对象的相关属性和方法了解数据集的基本信息、考查数据分布情况等,常用操作如表所示。方法功能方法info()查看数据集的基本信息,包括记录数、字段数、字段名(列名)、字段数据类型、非空值数据的数量和内存使用情况等info()describe()查看数据集的分布情况。数值型字段的信息包括:记录数量、均值、标准差、最小值、最大值和4分位数等。文本型字段的信息包括:记录数量、不重复值的数量、出现次数最多的值和最多值的频数describe()数据的导入与导出——数据的导入Pandas中的数据类型包括数字(整型、浮点型)、字符串(文本,或文本和数字的混合)、布尔型(True或False)、日期时间型、时间差(两个日期时间的差值)、分类(有限的文本值列表)等,如表所示。不同类型的字段可以存储不同的数据及执行不同的操作。数据的导入与导出——数据的导出在数据处理和分析过程中,常常需要保存处理的中间结果或最终结果,可以将DataFrame对象导出为Excel、CSV、TXT、JSON、数据库等多种格式的文件。(1)使用to_excel()方法导出Excel文件to_excel(excel_writer,sheet_name,columns,header,index)功能:将DataFrame中的数据写入Excel文件的工作表。参数说明:excel_writer:要写入的Excel文件。sheet_name:要写入的工作表。默认是“Sheetl”工作表。columns:Excel工作表的列名。默认是DataFrame对象的列名。header:指定Excel工作表是否需要表头。默认header=True。index:指定是否将DataFrame对象的行索引写入Excel工作表。默认index=True。数据的导入与导出——数据的导出在数据处理和分析过程中,常常需要保存处理的中间结果或最终结果,可以将DataFrame对象导出为Excel、CSV、TXT、JSON、数据库等多种格式的文件。(2)使用to_csv()方法导出CSV格式的文件to_csv(path_or_buf,sep,columns,header,index)功能:将DataFrame中的数据写入CSV格式的文件。参数说明:path_or_buf:要写入的CSV格式的文件。sep:数据项之间的分隔符。其他参数的含义与to_excel()方法的相同。Pandas基本数据结构——Series数据结构定义与操作

importpandasaspddf_order=pd.read_csv(r'./data/Online_Retail_Data.csv')#导入所有列df_order_new=df_order.head(5)#前5条记录print(df_order_new)df_order_new.to_csv(r'./data/Online_Retail_Data_new.csv',index=False)【例6-15】将Online_Retail_Data.csv中的前5条数据保存到CSV格式的文件中。Pandas

数据处理分析在财经数据分析领域,Pandas库是Python核心数据分析工具,功能强大。本章节系统介绍Pandas在财经数据分析中的应用,包括数据结构定义、数据导入导出、预处理以及高级分析方法等完整流程。本章先讲解Series和DataFrame数据结构定义与操作,为财经数据存储管理提供方案;再阐述数据导入导出技术,实现不同格式间无缝转换。数据预处理部分探讨缺失值、异常值、重复值处理方法,为后续分析奠定基础。数据分析方法涵盖基本统计、分组、分布等技术,揭示数据规律和业务洞察。本章节为财经数据分析师提供系统化工具箱,助力高效决策支持。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],['应付账款'

温馨提示

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

评论

0/150

提交评论