《大数据技术基础与财务应用》课件 项目六 Python在财务报表分析中的应用_第1页
《大数据技术基础与财务应用》课件 项目六 Python在财务报表分析中的应用_第2页
《大数据技术基础与财务应用》课件 项目六 Python在财务报表分析中的应用_第3页
《大数据技术基础与财务应用》课件 项目六 Python在财务报表分析中的应用_第4页
《大数据技术基础与财务应用》课件 项目六 Python在财务报表分析中的应用_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

Python在财务中的应用字符串类型及其操作获取财务报表数据字符串类型及其操作江西绿色家电有限责任公司的周会计,准备利用Python语言工具爬取小家电行业数据,并且将江西绿色家电有限责任公司的财务报表数据和同行业数据进行对比分析,实现智能化的财务报表分析。'任务解读任务实施步骤从科云大数据中心获取小家电行业上市公司股票代码列表。0102获取财务报表数据利用小家电上市公司股票代码列表数据,批量获取该行业所有上市公司资产负债表、利润表、现金流量表数据,并且将数据存储在处在行业数据文件夹当中。获取财务报表数据这个任务,我们可以分成两个步骤展开第一步,从科云大数据中心获取小家电行业上市公司股票代码列表。任务实施步骤表任务实施流程任务实施1-1观察科云大数据中心-板块模式-行业板块数据和网络地址爬取小家电行业列表数据读取上市公司代码与名称,存储为字典并输出导入模板,准备代码环境观察小家电行业列表数据,将数据转化为列表,并存储为DataFrame格式将公司代码数据存储为DataFrame格式并保存至excel表格中246135任务实施1-1观察科云大数据中心-板块模式-行业板块数据和网络地址导入模板,准备代码环境爬取小家电行业列表数据观察小家电行业列表数据,将数据转化为列表,并存储为DataFrame格式将公司代码数据存储为DataFrame格式并保存至excel表格中读取上市公司代码与名称,存储为字典并输出表任务实施1-2在科云大数据中心搜索任意一家小家电上市公司代码,观察其财务报表的网络地址并总结规律利用pandas读取小家电行业所有上市公司资产负债表并保存利用for循环读取上市公司代码和名称利用pandas读取小家电行业所有上市公司利润表并保存利用pandas读取小家电行业所有上市公司现金流量表并保存第二步,利用股票代码列表去读取所有上市公司的资产负债表、利润表和现金流量表。任务实施流程任务实施1-2在科云大数据中心搜索任意一家小家电上市公司代码,观察其财务报表的网络地址并总结规律利用pandas读取小家电行业所有上市公司资产负债表并保存利用pandas读取小家电行业所有上市公司现金流量表并保存利用for循环读取上市公司代码和名称利用pandas读取小家电行业所有上市公司利润表并保存25134任务相关知识点本任务涉及知识点任务实施涉及的知识点pandas库的认识掌握pandas库如何对文件进行读取和保存操作案例导入在本任务实施过程中,同学们除了需要学习并掌握以上知识点,还要注意开展数据处理活动应当遵守《中华人民共和国数据安全法》,诚实守信,履行数据安全保护义务,防范信息泄露,保护数据安全。素养小课堂网络爬虫的含义网络数据的爬取,即网络爬虫,是一种按照一定规则,自动抓取网络信息的程序。可以将网络爬虫理解为在网络上爬行的一只蜘蛛,互联网就像一张大网,爬虫便是在这张网上爬来爬去的蜘蛛,如果遇到猎物(即所需的资源),就会将其抓取下来。所以爬虫的目的在于将目标网页数据下载至本地,以便于进行后续的数据分析。网络爬虫定义网络爬虫的原理爬虫就是模拟用户浏览网页的操作,通过模拟浏览器向网站发送请求,获取资源后提取有用的数据并保存。网络爬虫原理网络爬虫的基本流程网络爬虫基本流程表发送请求表获取响应内容表解析内容表保存数据网络爬虫的基本流程两者作用相同示例如下网络爬虫基本流程URL(UniformResourceLocator)统一资源定位符:也就是网址,是对互联网上资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。HTTP协议超文本传输协议:互联网上应用最为广泛的一种网络协议,所有网页文件都必须遵守这个标准,设计HTTP最初的目的是提供一种发布和接收HTML页面的方法。字符串定义及其运算字符串常用函数字符串格式化网络爬虫的基本流程网络爬虫基本流程一个网页对应一个唯一的URL,网页中加载的图片、视频、文件也同样对应一个唯一的URL,在一个HTML页面中可能存在多个URL,想要获取一个页面内所有URL链接,则需在爬取网页后,利用python解析库对爬取的页面进行解析,提取所有URL。网络爬虫操作实例网络爬虫操作实例利用Pandas库中的read_json()爬取科云大数据中心的数据;'通过read_html()从新浪财经网站爬取海澜之家的利润表数据。一二三小结与反思本节重难点理解网络爬虫的基本原理了解常用的网络爬虫专业词汇掌握简单网页如何用pd.read_html()或者pd.read_json()爬取数据小结与反思

课后思考:很多网站是动态渲染的,就难以通过pd.read_html()或者pd.read_json()直接获取。同学们思考下这种情况下,该如何爬取网络数据呢?获取财务报表数据认识Pandas字符串类型及其操作获取财务报表数据认识Pandas字符串类型及其操作提纲OUTLINEpandas简介DataFrame数据结构pandas数据类型小结与反思导入pandas模块Series数据结构pandas简介Pandas在英文译为“熊猫”,但是在Python中,Pandas是一个扩展程序库,可以把它理解为数据工具箱,用于数据分析。Pandas的优点在于,它纳入了大量数据库和数据模型,提供了高效地操作大型数据集所需的工具。因此,使用它处理数据会更加简单、便捷。pandas简介Pandas是基于NumPy的一种工具,最初是作为金融数据分析而开发出来的。而NumPy是Python语言的第三方库,是一个很重要、使用很多的科学计算包。Pandas与NumPy两者之间的区别在于其作用不同,简单来说,Pandas是专门为处理表格和混杂数据而设计的,而NumPy更适合处理统一的数值数组数据。pandas简介pandas简介表导入pandas模块导入pandas模块Pandas引入规则:importpandasaspd输入上述代码,后续调用pandas相关的函数时,直接在其前加上“pd.”就可以了,比如上节中的pd.read_html()、pd.read_json()pandas数据类型一维数据结构,能够保存任何数据类型(整数、浮点数、字符串等),相当于excel表中的一列seriesDataFramepandas数据类型二维数据结构,相当于excel表格,DataFrame是最常用的Pandas数据类型,也是财务数据在Python中的最佳存储方式。pandas数据类型表Series数据结构Series数据结构Series类型可由Python列表、字典、NumPy数组等数据类型创建,Series数据类型使用其同名函数创建。Series是一种一维数据结构,类似于Python列表,由一组数据及与之相关的数据索引组成,每个元素带有一个自动索引(索引从0开始,也称为原始索引),除自动索引外,还可以自定义索引,自定义索引可以是数字或字符串(自定义索引可重复)。DataFrame数据结构DataFrame数据结构表DataFrame是一个表格型的数据类型,每列值数据类型可以不同,DataFrame既有行索引,也有列索引,常用于表达二维数据。DataFrame数据结构DataFrame的创建DataFrame由其同名函数创建,语法如下:pd.DataFrame(data,columns=[序列],index=[序列])通常以二维数据创建DataFrame数据结构DataFrame具有index、columns、values、dtypes属性,这些属性分别表示数据表的行索引、列索引、二维数组数据以及各部分的属性。DataFrame的属性表DataFrame的属性DataFrame数据结构属性说明实例结果indexDataFrame的行索引属性df.indexRangeIndex(start=0,stop=4,step=1)columnsDataFrame的列索引属性df.columnsIndex(['code','name'],dtype='object')valuesDataFrame的numpy原生二维数组数据df.values[['688169'‘石头科技’][‘605555’’德昌股份’][‘301332’’德尔玛’][‘603486’’科沃斯’][‘300272’’开能健康’]]dtypessizeshapendimDataFrame具有ndarray数组的部分属性df.dtypescodeobjectnameobjectdtype:objectDataFrame数据结构DataFrame与Series的相互转化DataFrame单独取一列或一行就是一个Series可以通过pd.DataFrame()函数将Series数据转化为DataFrame数据类型一二三小结与反思本节重难点了解了pandas的两种数据类型掌握如何创建Series数据和DataFrame数据掌握两种数据类型如何相互转化小结与反思

课后思考:请同学们结合本节内容思考一下,Series数据和DataFrame数据创建函数小写和大写有没有区别呢?获取财务报表数据Pandas文件操作字符串类型及其操作提纲OUTLINE读取excel文件写入excel文件字符串定义及其运算字符串常用函数字符串格式化读取excel文件读取excel文件pandas支持将数据写入单个或多个Excel工作表,使用函数to_excel(),它的参数和读取文件的参数类似。写入单个工作表语法规则如图读取excel文件写入excel文件写入单个工作表表参数参数说明实例excel_writer文件路径r'E:\python课程\作业\教材案例编写\写入文件.xlsx'sheet_name导出的excel表名1、sheet_name='Sheet1':默认表名为'Sheet1'2、sheet_name='表名':自定义表名index是否输出行索引1、index=True:默认输出;2、index=None:不输出写入excel文件接下来我们再来了解下写入多个工作表,它不是多个表的简单累加,相对比较复杂语法规则如图:写入多个工作表写入excel文件表写入多个工作表参数说明with适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭等mode值为”w”或”a”。当mode=”w”时,当前文件的内容会被写入的内容覆盖;当mode=”a”时,会在原有的Excel文件中追加写入的内容。如果参数sheet_name使用了跟已有sheet相同的名称,那么系统会自动添加一个序号作为后缀engine当操作的Excel文件为.xlsx格式时,engine=’openpyxl’;当操作的Excel文件为.xlsx格式时,engine=’xlrd’aswriter设置别名为writer一二三小结与反思本节重难点掌握如何读取excel文件掌握如何写入excel文件正确使用read_excel()函数和to_excel()小结与反思

课后思考:同学们课后思考一下,除了EXCEL文件能实现读写,其他类型的文件能不能通过pandas库实现读取和写入呢?谢谢观看字符串类型及其操作Python在财务中的应用字符串类型及其操作清洗财务报表数据字符串类型及其操作案例导入[图片][图片]案例导入[图片]案例导入数据清洗一般情况下,当数据量比较小的时候,我们可以和周会计一样,通过观察数据发现原生数据存在的问题。但是当数据量比较大的时候,在数据清洗之前就需要了解这些数据包含了哪些内容,来发现数据存在的问题。可以通过head或者是tail函数去了解数据的基本构成以及它的行列的具体意义。可以通过统计表格当中非空数据的数量来了解判断空值的原因以及是否需要处理。通过DESCRIBE函数可以生成数据描述性的统计结果,然后了解数据的计数结果、最大值、最小值等信息。数据清洗表任务二

数据清洗任务实施导入pandas库、numpy库,准备代码环境读取股票代码文件将资产负债表、利润表和现金流量表中的——替换为NANfor循环读取小家电行业每家公司的资产负债表、利润表和现金流量表将报表中除了项目名称意外的其他列转成为浮点数在所有报表中替换为NaN的数据填充为0存储为清洗完成的报表数据任务实施流程任务实施导入pandas库、numpy库,准备代码环境将资产负债表、利润表和现金流量表中的——替换为NAN在所有报表中替换为NaN的数据填充为0读取股票代码文件for循环读取小家电行业每家公司的资产负债表、利润表和现金流量表将报表中除了项目名称意外的其他列转成为浮点数246135存储为清洗完成的报表数据7任务二数据清洗任务实施涉及知识点数据清洗本任务涉及知识点DataFrame数据类型的基本操作以及函数数据筛选和查询数据清洗案例导入数据清洗的学习不仅仅是几个函数几个处理方法的学习,更需要强调的是同学们在数据清洗过程中培养稳健审慎,不急功近利的素养。中华优秀传统文化强调“欲速则不达,见小利则大事不成”,视“稳健审慎”为君子之品、成事之道,这是在长期实践中积淀的经营智慧和生存法则。在数据清洗过程中要以数据高质量分析为目标,对缺失值、重复值等的处理要保持审慎的态度,不能盲目删除,简化处理。素养小课堂清洗财务报表数据DataFrame基本操作及函数字符串类型及其操作提纲OUTLINEDataFrame基本操作DataFrame基本函数DataFrame基本操作根据上表数据创建DataFrame,并完成以下操作:(1)增加新列数据,期末余额(2)删除“科目编码”列(3)转置DataFrameDataFrame的基本操作主要包括增、删、改、查等语法规则如图:表DataFrame基本操作DataFrame基本操作在DataFrame的删除操作中需要注意使用del加变量名索引某列,即可删除被索引的列数据;如果要删除整个DataFrame,直接使用del加DataFrame名称即可,删除整个DataFrame之后,再读取数据,程序会报错。DataFrame基本函数表DataFrame的操作函数有许多,以下简单介绍几个基本函数:基本函数描述rename()修改行索引/列名insert()插入列drop()删除行列head()返回DataFrame前n行tail()返回DataFrame后n行DataFrame基本函数第一rename()和drop()函数均需要设置参数inplace=True才会对原数据修改,默认为False,返回新的DataFrame;第三Insert()函数指将列插入特定位置,插入的值可选(int、Series、数组),allow_duplicates参数表示是否允许列名重复,默认False,如果列名已经存在则报错,设置为True表示允许列名重复。第二drop()函数删除数据时,默认是删除行,如果删除列,需要设置axis=1,否则程序会报错;对于这些函数有以下几点需要注意:小结与反思一二三灵活地运用操作和函数解决实际问题掌握DataFrame的基本函数掌握DataFrame的基本操作本节重难点小结与反思

课后思考:同学们根据本节所学内容,思考一下如果是Series数据,它的操作和DataFrame数据是不是一样的呢?数据筛选与查询DataFrame索引使用[],直接索引语法:df[]直接索引根据选择的数据不同又可以分为以下几种:直接筛选表选择单列数据:df['列'];

选择多列数据:df[['列1','列2']],通过列名组成的列表选择多列数据;选择多行数据:df[1:3],按位置选取连续的行(切片),前闭后开。数据筛选与查询布尔索引(带条件判断的索引):根据布尔条件选择对应的行。根据选择条件数量可分为以下两种:1.单列布尔选择:df[(df['列']==条件)],选取某列满足一定条件的行;2.多列布尔选择:df[(df['列1']==条件)&(df['列2']>条件)],选取多列满足一定条件的行。条件筛选小结与反思本节重难点二条件筛选只能筛选符合条件的行,无法实现筛选符合条件的列。单列布尔选择和多列布尔选择都是对列设置筛选条件。条件均需要放在小括号中,多条件筛选时,用&、|、~操作符表示和与非,不能使用and、or、not关键词。三布尔选择的结果还是DataFrame,所以对于结果可以进行切片、索引器等访问。一直接筛选的三种方式中,只有单列、多列和多行,并没有办法实现切片的操作,也就是筛选行和列的操作,用直接筛选无法实现。小结与反思

课后思考:同学们请思考一下,既然直接索引无法实现单行或者切片的操作,那又有什么办法解决行索引呢?数据清洗重复值处理表duplicated()函数常用参数常用参数描述subset根据特定列识别重复项,默认使用所有列keep确定要标记的重复项,可选'first'、'last'、False,默认为'first',表示标记除第一次出现的重复项,'last'表示标记除最后一次出现的重复项,False表示标记所有重复项数据清洗重复值有可能会影响数据分析结果,特别是存在大量重复时,需要查找重复原因。一般情况下,如果确定重复值是冗余,最直接的做法就是删除重复值。删除重复值可以通过drop_duplicates()函数实现。重复值处理drop_duplicates()函数:返回删除重复行的DataFrame语法如下DataFrame.drop_duplicates(subset=None,keep='first',inplace=False,ignore_index=False)数据清洗重复值处理表drop_duplicates()函数常用参数:常用参数描述subset根据特定列识别重复项,默认使用所有列keep确定要保留的重复项,可选'first'、'last'、False,默认为'first',表示保留第一次出现的重复项,'last'表示保留最后一次出现的重复项,False表示删除所有重复项inplace默认为False,True表示直接在原数据上删除ignore_index重建索引,默认为False小结与反思本节重难点一掌握duplicated()函数二掌握drop_duplicates()函数小结与反思

课后思考:重复值会增加某些数据对整个数据集的权重,影响最后的数据分析结果。但需要注意的是在删除重复值时,需要了解重复位出现的原因。实际业务中,确实有很多出现重复数据的情况,比如同名销售人员月销售业绩相同等。因此,在处理重复数据前,需要先判断出现重复数据是人为失误还是客观存在,以防误删数据。清洗财务报表数据数据筛选与查询(二)字符串类型及其操作提纲OUTLINEloc索引器iloc索引器数据筛选与查询根据上表数据创建DataFrame,并完成以下操作:(1)选取第一行数据;(2)选取第一行和第三行数据;(3)选取第一行、第三行,列名为”期初余额”、”期末余额”的数据;(4)选取期初余额大于10000,本期发生额大于25000;(5)选取第一至第三行,”会计科目”至”期末余额”列。自定义索引012345012原始索引原始索引自定义索引数据筛选与查询通过对直接筛选和条件筛选的学习,我们知道,直接筛选只有单列、多列和多行,并没有办法实现切片的操作,也就是筛选行和列的操作,用直接筛选无法实现。那用什么方法可以实现行筛选呢?数据筛选与查询索引器筛选,是使用索引器筛选数据,根据使用的索引不同又可以分为loc索引器和iloc索引器。'在Pandas的两种数据结构中,原始索引(位置信息)和自定义索引(标签信息)是并存的。012345012原始索引原始索引自定义索引自定义索引字符串定义及其运算字符串常用函数字符串格式化数据筛选与查询loc索引器选择单行/多行数据:df.loc['行']、df.loc[['行1','行2']];选择多行多列数据:df.loc[['行1','行2'],['列1','列2']],通过两个列表选取行列组合;loc布尔选择:df.loc[(df['列']>条件)],选取单列(多列)满足一定条件的行;loc切片(选择连续的多行多列):df.loc['行1':'行2','列1':'列2'],通过切片选取连续的行列组合。常见形式有如下几种:loc索引器内既能使用自定义索引,也可以使用原始索引。根据行索引和列索引进行选取,先行后列,也可以只选取行索引。数据筛选与查询loc索引使用自定义索引的切片范围为闭区间,即始末数据都包含。loc索引器不能直接选取列,必须先行后列。loc索引器数据筛选与查询iloc索引器与loc索引器的使用几乎相同,唯一不同的是,iloc索引器中只能使用原始索引(位置信息),不能使用自定义索引,且iloc索引器切片为前闭后开。iloc索引的使用可以参见任务实施中将资产负债表、利润表和现金流量表出报表项目列都转换为浮点数的代码。通过iloc索引[:,1:]选择所有行,和第二列开始的所有列。iloc索引器一二三小结与反思本节重难点索引器索引都必须是先行后列,不能直接选取列。不连续的行列筛选时,行和列分别写在[]中,中间用逗号隔开,连续的多行多列筛选时,行和列不需要单独用[]分开,行列写在一个[]中。直接筛选的布尔选择和索引器的布尔选择使用方法相同,条件写在小括号中。小结与反思本节重难点四五索引器索引中loc索引使用的是自定义索引,如果没有自定义索引时,使用原始索引。而iloc索引只能使用原始索引。loc索引切片范围为闭区间,iloc索引器切片为前闭后开。小结与反思

课后思考:请同学们课后对pandas数据筛选的三种方式,直接筛选、条件筛选和索引器筛选进行对比总结,加深对三种方式的理解和使用。清洗财务报表数据数据清洗(二)字符串类型及其操作提纲OUTLINE重复值处理缺失值处理其他异常处理数据清洗缺失值处理表数据清洗缺失值处理缺失值是指现有数据集中某个或某些属性的值是不完整的。在数据分析中,数据缺失经常发生,有可能是数据没有采集成功,也可能是传输、存储出现故障等造成的。数据清洗缺失值处理对缺失值进行处理先检验是否存在缺失值dropna()和fillna()函数isnull()和notnull()函数数据清洗缺失值处理数据量很小时,可以用肉眼快速识别;但当数据量很大时,无法进行快速准确定位,需要依靠程序处理。'Pandas检测缺失值主要有两个函数,分别是isnull()和notnull(),即“是缺失值”和“不是缺失值”,默认会返回布尔值True或False用于判断数据清洗缺失值处理表isna()函数常用方法方法描述df.isna()查看缺失值位置df.isna().any()判断某一列是否有缺失值df.isna().sum()统计每列缺失值数量df.isna().sum().sum()统计DataFrame中缺失值合计数Series.value_counts()统计Series中不同元素出现的次数,在DataFrame中使用时,需要指定对哪一列或行使用数据清洗同学们想一想查找到的缺失值该如何处理呢?通常查找出缺失值之后,应根据数据分析需求,采用以下方式对缺失值进行处理。缺失值处理删除数据,根据缺失比例删除行、列。使用默认值填充,可用空字符串或数值0替换。使用估算值填充,采用中位数、平均数、众数等替换。数据清洗Pandas主要提供两个函数dropna()和fillna(),对缺失值进行处理。dropna()函数,用于删除缺失的值。缺失值处理表语法格式如图所示

数据清洗缺失值处理表dropna()函数参数如下:常用参数描述axis默认axis=0,表示删除包含缺失值的行,axis=1,表示删除包含缺失值的列how默认how='any',表示删除含有缺失值的所有行或列,how='all',表示删除全为缺失值的行或列threshint,保留含有int个非空值的行、列subset对特定列进行缺失值删除inplace默认为False,True表示直接在原数据上更改数据清洗比如对于上例中查找到的缺失值,如果经过分析,确定直接删除,那可以编写代码balancesheet3=balancesheet2.dropna()。缺失值处理数据清洗fillna()函数:使用指定的方法填充NA/NaN值。语法格式如图所示:缺失值处理数据清洗缺失值处理表fillna()函数参数如下:常用参数描述value用于填充的值:数值、字符串、变量、字典、series、DataFrame,不能使用列表method填充方法:{'backfill','bfill','pad','ffill',None},默认为None,指定填充值,pad/ffill表示用前一个非缺失值填充,backfill/bfill表示用后一个非缺失值填充axis填充缺失值所沿的轴,默认为Noneinplace默认为False,True表示直接在原数据上填充limit限制填充次数数据清洗比如上例的数据清洗数据源中的缺失值,如果以零填充缺失值处理表编写代码

balancesheet4=balancesheet2.fillna(0)我们获取的数据除了重复值、缺失值之外往往还存在许多其他问题。其他异常值处理常见异常情况处理数据清洗1.特殊字符删除:将所有数据转换为字符串,使用replace()函数进行替换;2.数据类型更改:根据需求使用astype()函数更改数据类型;3.无法识别数据处理:替换默认值、或替换为NaN再进行处理;4.大小写转换:upper()、lower()函数。在任务实施中,小家电上市公司财务报表数据中存在特殊字符”--”,这些特殊字符会影响数据的计算分析。处理方法是先将特殊字符替换成NaN,再将NaN填充为0。其他异常值处理表DataFrame基本操作一二小结与反思本节重难点掌握缺失值处理以及相关函数掌握其他常见异常值处理方法小结与反思

课后思考:同学们结合数据清洗的任务,找一找在该任务中还进行了哪些数据清洗的处理?谢谢观看字符串类型及其操作Python在财务中的应用字符串类型及其操作字符串类型及其操作集成财务报表数据集成财务报表数据小家电上市公司行业数据全部清洗完成之后,为了能实现批量计算财务指标数据,进行报表分析,周会计准备将所有小家电上市公司的资产负债表、利润表以及现金流量表合并成一份大合并报表。资产负债表利润表现金流量表大合并报表集成财务报表数据表任务三

数据集成任务实施导入pandas库、numpy库,准备代码环境读取股票代码文件创建存储三大报表的空表格for循环读取小家电行业每家公司的资产负债表、利润表和现金流量表对所有报表截取前7列数据保存合并后的大报表到文件在所有报表的第一列添加公司名称合并所有公司的三大报表任务实施流程任务实施导入pandas库、numpy库,准备代码环境创建存储三大报表的空表格在所有报表的第一列添加公司名称读取股票代码文件for循环读取小家电行业每家公司的资产负债表、利润表和现金流量表对所有报表截取前7列数据246135合并所有公司的三大报表7任务三数据集成保存合并后的大报表到文件8数据清洗任务实施相关知识点数据集成数据连接数据合并merge函数join函数concat函数append函数集成财务报表数据素养小课堂这种集成并不仅仅体现在我们做数据处理、数据分析的过程当中,在我们的生活当中以及我们国家的发展中,这一点也体现得非常的突出。比如一带一路、中国与东盟各国的合作等等。“水涨荷花高”“独行快,众行远”“一棵树挡不住寒风”“大河有水小河满,小河有水大河满”这些说的都是一个道理,只有合作共赢才能办大事、办好事、办长久之事。集成财务报表数据表数据横向连接字符串类型及其操作分析数据往往来源于不同渠道,在进行数据分析时经常需要融合多方信息,比如分析财务指标时通常涉及资产负债表、利润表数据和现金流量表,那么在Pandas中,如何将多个表格的数据合并或者连接在一起呢?表数据横向连接数据横向连接数据的集成,根据连接的方向不同,可以分成横向连接和纵向连接。表pandas提供了多种连接、合并的方法包括merge()函数、concat()函数、join()函数、append()函数这些函数均适用于不同DataFrame的合并,但适用的场景有所不同merge()函数:具有表连接功能,类似于Excel中的vlookup函数,可以根据一个或多个键(列值)将不同DataFrame连接起来。merge()函数应用场景:两个DataFrame存在相同的键,根据键整合到一张表中。数据连接函数包括merge()函数和join()函数数据横向连接数据横向连接表merge()函数的语法格式如图所示数据横向连接merge()函数的参数参数说明left、right两个不同的DataFramehow连接方式,有inner、outer、left、right,默认为inner内连接on用于连接的列索引名称,左右两个DataFrame中必须同时存在,如果没有指定且left_index和right_index为False,则以两个DataFrame列名交集作为连接键left_on左侧DataFrame中用于连接键的列名,该参数在左右列名不同但代表的含义相同时非常有用right_on右侧DataFrame中用于连接键的列名left_index默认False,设置为True代表使用左侧DataFrame中的行索引作为连接键right_index默认False,设置为True代表使用右侧DataFrame中的行索引作为连接键sort默认为False,是否将合并的数据进行排序,设置为False可以提高性能suffixes字符串值组成的元组,两个表存在除主键之外的相同列名时,在列名后面附加的后缀名称用以区分数据来源于哪个表,默认为('_x','_y')copy默认为True,设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。indicator默认为False,是否显示每行数据的来源validate自动检查其合并键中是否有意外的重复项数据筛选与查询'接下来,我们以数据集成数据源,为同学们演示左连接、右连接、内连接、外连接四种不同方式的数据连接操作。资产负债表数据筛选与查询'利润表数据连接的另外一个函数是join()函数,连接另一个DataFrame的列(横向连接),与merge()函数功能类似,区别在于两者适用的场景有所不同。join()函数适用场景:无重复列名的两个DataFrame基于行索引进行列拼接。表数据横向连接join()函数语法格式如图所示数据横向连接join()函数的参数参数说明other连接的DataFrameon指定左表中用于连接的列名,右边必须有相同的列(需设置为索引)how连接方式,有inner、outer、left、right,默认为left左连接lsuffix两表列名重复时,左表的使用的后缀rsuffix两表列名重复时,右表的使用的后缀sort默认为True,将合并的数据进行排序,设置为False可以提高性能一二三小结与反思本节重难点理解横向连接和纵向连接横向连接中不同的连接方式,左连接、右连接、内连接、外连接的区别以及连接原理掌握merge()函数和join()函数小结与反思

课后思考:同学们可以使用上述数据集成数据源,尝试用join()函数做四种连接,并思考和merge()函数有哪些不同。集成财务报表数据表数据纵向连接字符串类型及其操作表数据纵向连接资产负债表利润表数据表的纵向连接,也叫做数据纵向合并。pandas提供了concat()函数和append()函数,用于实现表格的简单拼接。concat()函数:沿特定轴连接两个或两个以上的DataFrame,既可实现纵向合并也可实现横向合并,行列索引均可重复。concat()函数适用场景:两个或多个DataFrame进行横向(列拼接)或纵向合并(行拼接)。表数据纵向连接数据横向连接表concat()函数的语法格式如图所示表数据纵向连接concat()函数的参数参数说明objs连接对象axis轴向,0代表纵向合并(行拼接),1代表横向合并(列拼接),默认是0join连接方式,有inner(交集)、outer(并集),默认为'outer'ignore_index是否重建索引,默认Falsekeys传递键作为最外层级来构建层次结构索引,默认Nonelevels生成层次索引的级别,默认Nonenames生成层次索引的名称,默认Noneverify_integrity检测新的串联轴是否包含重复项,默认为Falsesort将合并的数据进行排序,设置为False可以提高性能,默认为Truecopy是否复制,默认为True表数据纵向连接默认axis=0,将表格进行纵向合并(行拼接),拼接后的表格,行列索引均进行如下操作:表axis=1,将表格进行纵向合并(行拼接),拼接后的表格,行列索引均进行如下操作:(1)index=index(df1)+index(df2)→直接累加(2)columns=columns(df1)∪columns(df2)→累加去重(1)columns=columns(df1)+columns(df2)→直接累加(2)index=index(df1)∪index(df2)→累加去重表数据纵向连接表在数据集成的任务实施中,我们看到通过代码实施表数据纵向连接append()函数:向DataFrame对象中添加新的行(纵向合并),如果添加的列名不在DataFrame对象中,将会被当作新的列进行添加。append()函数适用场景:两个DataFrame纵向连接,是concat(axis=0)的简略形式。数据纵向连接表append()函数语法格式如图所示:这里要注意,和concat()函数不同,append函数前是接数据表名,而不是pandas库名。数据纵向连接append()函数的参数参数说明other需要追加的DataFrameignore_index是否重建索引,默认为Falseverify_integrity具有重复项的索引是否抛出异常,默认为Falsesort默认为True,将合并的数据进行排序一二三小结与反思本节重难点掌握数据表的纵向连接学会使用concat()函数实现数据的连接财务人员需要根据数据分析目标的要求,灵活利用数据合并和连接,为下一步的数据分析和价值挖掘作准备小结与反思

课后思考:Merge()函数只能以横向连接方式连接两张表,而concat()函数可以横向拼接或纵向拼接方式合并多张表。请同学们思考思考横向连接上merge()函数和concat()函数有什么相同点和不同点呢?谢谢观看字符串类型及其操作Python在财务中的应用字符串类型及其操作分析财务报表数据字符串类型及其操作分析财务报表数据江西绿色家电有限责任公司的周会计将对合并后的三大报表进行财务报表分析。具体来说,需要完成以下三个任务:计算小家电行业的各项报表项目的平均数据以及行业平均资产负债率、行业平均流动比率、行业平均毛利率、行业平均营业净利率、行业平均盈利现金比率等相关指标;读取江西绿色家电有限责任公司财务报表,计算该公司资产负债率、流动比率、毛利率、营业净利率、盈利现金比率等财务指标任务;将行业平均财务指标数据和江西绿色家电有限责任公司相关财务指标进行合并并且保存。数据清洗缺失值处理表任务实施4-1任务四

分析财务报表数据任务实施4-2任务实施4-3引入数据库,读取合并后的三大报表设置项目列为索引,并按照年份分组并计算平均值行列索引互换计算行业平均资产负债率、行业平均流动比率、行业平均毛利率、行业平均营业净利率、行业平均盈利现金比率筛选指标数据,并对index列重命名将同行业指标和ABC公司的年份列都转换为字符串类型将同行业指标数据表和ABC公司指标数据表合并保存财务关键指标合并数据文件引入数据库,读取ABC三大报表数据将三张表格进行合并计算ABC公司资产负债率、流动比率、毛利率,营业净利率,盈利现金比率筛选指标数据,并对index列重命名观察科云大数据中心-板块模式-行业板块数据和网络地址爬取小家电行业列表数据读取上市公司代码与名称,存储为字典并输出35任务实施4-1引入数据库,读取合并后的三大报表设置项目列为索引,并按照年份分组并计算平均值计算行业平均资产负债率、行业平均流动比率、行业平均毛利率、行业平均营业净利率、行业平均盈利现金比率1任务四分析财务报表数据行列索引互换筛选指标数据,并对index列重命名任务实施4-2任务实施4-3引入数据库,读取ABC三大报表数据计算ABC公司资产负债率、流动比率、毛利率,营业净利率,盈利现金比率筛选指标数据,并对index列重命名将三张表格进行合并将同行业指标和ABC公司的年份列都转换为字符串类型将同行业指标数据表和ABC公司指标数据表合并保存财务关键指标合并数据文件23451234123分析财务报表数据任务实施相关知识点groupby函数agg函数pivot_table

温馨提示

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

评论

0/150

提交评论