《大数据技术在财务中的应用》 课件 项目6、7 模块在财务中的应用、Python在财务中的应用案例_第1页
《大数据技术在财务中的应用》 课件 项目6、7 模块在财务中的应用、Python在财务中的应用案例_第2页
《大数据技术在财务中的应用》 课件 项目6、7 模块在财务中的应用、Python在财务中的应用案例_第3页
《大数据技术在财务中的应用》 课件 项目6、7 模块在财务中的应用、Python在财务中的应用案例_第4页
《大数据技术在财务中的应用》 课件 项目6、7 模块在财务中的应用、Python在财务中的应用案例_第5页
已阅读5页,还剩293页未读 继续免费阅读

下载本文档

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

文档简介

项目六模块在财务中的应用模块Python语言最大的优势,是免费开源,除了自带的一些模块,还有数量庞大且功能强大的第三方模块可以使用。用好Python自带的模块和第三方模块是学习Python的基本目标。函数:是具有独立名称、独特功能的一段代码。模块:是分门别类、存放若干函数的文件。01模块的基本用法02内置模块03第三方模块04数据处理目录CONTENT01.模块的基本用法(1)模块导入的基本方法要使用某个模块中的函数,需要先导入模块。比喻一下:若将函数比作是“工具”,那么,模块就是“工具箱”,要使用工具,要先打开相应的工具箱。在Python中,可以使用import关键字来导入模块。例如:想使用数学模块math模块中的函数,首先要使用importmath导入。(1)模块导入的基本方法Python提供了以下3种导入模块的方式:(1)import模块名(2)import模块名as模块别名(3)from模块名import函数名/方法名提醒一下:不管执行了多少次import,一个模块只会被导入一次。(2)模块导入应用举例不同的导入方式对于模块内的方法和属性的调用是有区别的。使用“(1)import模块名”导入模块时,调用的格式为“模块名.属性/方法”。例如:importmath

#导入数学模块mathprint(math.fabs(-5)) #调用数学模块math的fabs()方法print(math.pow(2,3)) #调用数学模块math的pow()方法。(2)模块导入应用举例使用“(2)import模块名as模块别名”方式导入时,使用“模块别名.属性/方法”调用。例如:importmathassalary #导入数学模块math并起别名salaryprint(salary.fabs(-5)) #调用数学模块math的fabs()方法importnumpyasnp #约定俗成的别名importpandasaspd #约定俗成的别名(2)模块导入应用举例使用“(3)from模块名import函数名/方法名”方式导入时,可以有针对性地导入某个函数或者方法,当然,如果用“from模块名import*”导入,则导入模块的全部。例如:frommathimport* #导入数学模块math的全部属性和方法print(pow(5,3)) #直接调用数学模块math的pow()方法此时导入数学模块math的全部属性和方法,因此math模块内的全部属性和方法都可以直接调用,而不能也不需要加前缀“math.”。(2)模块导入应用举例如果局部导入模块中的指定函数或方法,则导入速度快、内存开销小,但是也存在一定的局限性,那些没有导入的函数将不能使用。例如:frommathimportpow #局部导入数学模块math的pow()方法print(pow(5,3)) #直接调用pow(),前面不能添加“模块名.”此时,如果使用未经导入的绝对值函数fabs(),将会出现错误。对于上述3种导入方式,编程时可根据个人的需要和习惯进行选择。02.常用内置模块内置模块那些在安装Python时就默认已经安装好的模块称为标准库,也称为内置模块,如math模块。有人把它们称为“Python自带的电池”,意思是Python拥有无限能量。熟悉标准库的使用是应用好Python所必需的。我们仅要求大家熟悉几种常用的内置模块:math模块、random模块、time模块和datetime模块。实际工作中,可以根据需要继续拓展学习。(1)math模块math模块中有大量常用的数学计算函数,如三角函数(sin()、cos()、tan())、反三角函数(asin()、acos()、atan())等,还有数学常量,如pi(圆周率)、e(自然数)等。在财务工作中,我们可能会经常用到这些简单又实用的函数。例如:使用绝对值函数fabs()来评价投资项目收益偏离目标的程度、使用幂运算函数pow()计算现值终值系数、使用平方根函数sqrt()计算企业最佳现金持有量和经济订货批量。(1)math模块举例例:若存货全年需要量为D,每批订货成本为U,每批订货量为Q,每件存货的年储存成本为C,那么经济订货批量

。已知某零件年需用量为3600件,每批订货成本为100元,单位储存成本为2元。使用math模块中sqrt()函数计算经济订货批量:importmath#导入math模块 D=3600U=100C=2print("经济订货批量为",math.sqrt(2*U*D/C),"件。")(2)random模块random模块主要用来生成随机数,随机数是有范围的。函数名功能random()随机生成一个[0,1]之间的数(含两端,下同)randint(a,b)随机生成一个[x,y]之间的整数。x,y都是整数uniform(x,y)随机生成一个[x,y]之间的数。x,y可以是小数randrange(x,y,z)在range(x,y,z)中随机取一个数choice(x)从序列x中随机取一个元素。x可以是列表、元组、字符串random模块的部分函数(2)random模块举例importrandomprint(random.random())print(random.randint(1,10))print(random.uniform(1.2,5.6))print(random.randrange(2,30,5))

#在序列(2,7,12,17,22,27)中取随机数print(random.choice("有借必有贷,借贷必相等"))print(random.choice(["资产","负债","所有者权益","收入","费用","利润"]))(3)time模块time模块是和时间相关的库,我们在计算应计利息、固定资产折旧、员工工龄工资时都要用时间计算,下面是一些常用的时间函数:(1)time()函数。为时间戳函数,表示从1970年1月1日0时0分0秒起,至当前时间的总秒数。(2)localtime()函数。用于获取本地时间。结果是一个时间元组,各项含义,详见教材表6-2-2。(3)time模块举例内置模块time常用函数示例importtimeprint(time.time())print(time.localtime())运行结果:1688348609.6964917time.struct_time(tm_year=2023,tm_mon=7,tm_mday=3,tm_hour=9,tm_min=43,tm_sec=29,tm_wday=0,tm_yday=184,tm_isdst=0)【代码说明】第1个结果是时间戳,是运行该语句时的时间与起始时间之间的总秒数。

第2个结果是一个时间元组,是当前制作本课件时运行该语句的时间数据。(4)datetime模块虽然time模块可以实现有关时间方面的所有功能,但是使用起来略显繁琐,所以又出现了datetime模块。在Python中datetime模块也用来处理时间和日期。1.datetime.date:表示日期的类。常用属性有year,month,day。2.datetime.datetime:表示日期和时间的类。3.datetime.time:表示时间的类。常用属性有hour,minute,decond。4.datetime.timedelta:表示时间间隔,即两个时间点之间的长度。(4)datetime模块举例importdatetimet=datetime.date #注意此处t的取值print(t.today()) #调用当前时间today()函数print(t.today().year)print(t.today().month)print(t.today().day)注意:每个人运行代码的时间点不相同,所以产生的结果也不相同。课后小结本节我们学习了Python自带的内置模块的使用方法,其中重点介绍了math和random模块的使用。其实,Python内置模块还要很多很多,使用方法却是大同小异,主要不同体现在所实现的功能上。有兴趣的读者可以查阅资料,继续深入进行研究。03.第三方模块第三方模块Python目前已经成为数据分析和数据挖掘软件的中流砥柱,目前在财务数据的处理与分析中也扮演着越来越重要的角色。Python自身的列表和字典等数据类型特别适合数据分析处理。更重要的是,Python拥有一个非常活跃的科学计算社区,有不断改良的第三方数据分析扩展库。安装第三方模块使用第三方模块之前都需要先安装。Python提供了安装模块的工具,就是pip或pip3。找到Python的安装文件夹,在命令行窗口输入:pipinstall模块名(或pip3install模块名)就可以安装,例如安装numpy模块,命令如图所示:pandas是财务人员使用频率最高、最重要的模块。既能处理Excel难以解决的大批量数据问题,又能对日常财务工作中储存在Excel中的少量数据进行更快速度的处理。2)pandas模块matplotlib是一个Python绘图库,已经成为公认的数据可视化工具。可以很轻松地画一些或简单或复杂的图形,生成折线图、直方图、条形图、散点图等,使用方便简单。3)matplotlib模块pyecharts可以展示动态图,在线报告等,比较美观且展示数据方便,鼠标悬停在图上,即可显示数值、标签等,甚至单击标签实现部分图形的关闭与打开,效果非常酷炫。4)pyecharts模块numpy是一个用Python实现的科学计算包,专为进行严格的数值处理而设计的。多为很多大型金融公司和核心的科学计算组织使用,具有运算速度快、效率高、节省空间等特点。1)numpy模块我们将学习以下四个模块(1)numpy模块numpy是一个用Python实现的科学计算包,专为进行严格的数值处理而设计的。尤其是对大型多维数组和矩阵,numpy有一个大型的高级数学函数库来操作这些数组。numpy提供了许多高级的数值编程工具,如矩阵数据类型、矢量处理,以及精密运算等。numpy多为很多大型金融公司和核心的科学计算组织使用,具有运算速度快、效率高、节省空间等特点。(1.1)创建numpy数组numpy中最重要的对象就是ndarray多维数组,它是一组相同类型元素的集合,元素可用从0开始的索引来访问。多维数组ndarray中的元素在内存中连续存放并占据同样大小的存储空间。numpy的数组通常处理数值型数据。要使用numpy模块前需先导入模块,其约定俗成的语法格式如下:importnumpyasnp

#np是numpy公认的别名,最好不要标新立异(1.1)创建numpy数组numpy模块中创建数组的常用函数如下表所示:函数功能array(x)根据列表或元组x创建数组arange(x,y,i)创建一维数组,元素等价于序列range(x,y,i)random.randint(…)创建一个元素为随机整数的数组numpy模块的常用函数【例】创建numpy数组的程序示例importnumpyasnp #导入numpy模块print(np.array([1,2,3,4])) #使用已知列表创建一维数组print(np.arange(1,10,3)) #以自动生成的序列创建一维数组print(np.random.randint(10,20,5)) #创建一个一维数组,其取值区间是[10,20]的随机整数,数组元素为5个print(np.random.randint(10,20,[2,3]))#创建一个2行3列的二维数组,其取值区间是[10,20],数组元素为6个(1.1)创建numpy数组numpy数组常用属性和函数属性或函数含义或功能dtype数组元素的类型size数组元素的个数tolist()数组转换为列表listreshape()改变数组的形状(1.2)numpy数组常用属性和函数常用属性和函数用法举例:importnumpyasnp

#导入numpy模块a=np.arange(0,15,2) #以自动生成的序列创建一维数组ab=a.tolist() #将数组a转换为列表bc=a.reshape(2,4) #使用数组a的元素,将其形状改为2行4列,存入二维数组c;a不变print(a)print(b)print(c)print(c.dtype)#测试数组c的元素类型print(c.size) #测试数组c的元素个数(1.2)numpy数组常用属性和函数【代码说明】(1)注意a和b的类型不同,其输出效果不同。(2)a是数组,元素之间显示为空格;b是列表,元素之间是逗号。(1.3)numpy数组的运算numpy数组的优势是可以很方便地对数组元素进行数学运算。数组参与的数学运算分三种:1.两个数组之间进行加减乘除运算,要求参与运算的两个数组具有相同的形状shape,即相同的维数与元素个数。其运算是对应位置元素的计算;2.数组与数字之间进行的四则运算,每个元素都做相同的运算;3.对数组进行统计计算:求和、求平均值、求最小值、求最大值。(1.3)numpy数组的运算及用法示例1importnumpyasnpa=np.array((1,2,3,4))

#[1234]b=a+1

#[2345]c=a*10

#[10203040]print(a)print(b)print(c)print(a+b)

#数组a和b对应位置元素相加print(a*b) #数组a和b对应位置元素相乘print(np.sqrt(c)) #对数组c每个元素求平方根运行结果:[1234][2345][10203040][3579][261220][3.162277664.472135955.477225586.32455532] (1.3)numpy数组的运算及用法示例2【知识拓展】在财务数据处理与分析中,我们需要经常对不同期间或项目的一系列数字进行批量处理,例如计算员工工资时对各项收入和扣除项进行汇总(加和减),计算销售额时对各批次销量乘以单价(乘),计算本期各项数据相比上期同项数据的增长率(除)。例如,企业本期共销售了5批商品,销量分别为5000、8000、1500、4000、6500件,对应单价为1.5、1.3、2.0、1.6、1.4元每件,计算每批次的销售额。代码如下:importnumpyasnpa=np.array((5000,8000,1500,4000,6500))b=np.array((1.5,1.3,2.0,1.6,1.4))print(a*b)——————————运行结果:[7500.10400.3000.6400.9100.](1.3)numpy数组的运算及用法示例3【例】numpy数组统计函数及用法示例importnumpyasnpa=np.arange(1,9,1).reshape(2,4)print(a)print("以下输出所有元素的统计结果:")print(a.min())#求所有元素的最小值print(a.max())#求所有元素的最大值print(a.sum())#求所有元素的和print(a.mean())#求所有元素的平均值运行结果:[[1234][5678]]以下输出所有元素的统计结果:18364.5(2)pandas模块pandas是数据分析最常用的模块,可以说是财务人员在使用Python进行工作时使用频率最高、最重要的模块。Python中的所有数据类型在pandas中依然适用,pandas主要有一维Series、二维的表格DataFrame类型。一维Series与numpy中的一维数组array类似,所不同的是,数组array通常处理的数据是数值型,而Series可以存放字符型、数字、boolean值等数据类型;二维的表格DataFrame类型可以理解为Series的容器。这些数据类型使pandas操作数据更加方便和高效,其中DataFrame类型最为常用。(2)pandas模块Series相当于Excel中任意一列数据,DataFrame相当于一张完整的Excel表格,是一个带行、列标签的二维表格。pandas的核心功能就是在二维表格DataFrame上做各种操作。如果安装了OpenPyXL、Xlrd、Xlwt模块,pandas还能用于读写Excel文档。因此,pandas既能处理Excel难以解决的大批量数据问题,又能对日常财务工作中储存在Excel中的少量数据进行更快速度的处理。执行pipinstallpandas可以安装pandas。DataFrame类型最为常用。(2.1)一维Series类型Series是pandas中很重要的类型。Series是每个元素都有一个标签的一维表格,相当于Excel中任意一列数据,从使用形式上看,兼具字典和列表的特点。Series的定义规则:pd.Series(data,index) #data为数据列,index为索引列数据列:可以由列表、字典等作为参数来创建。索引列:可用列表自定义,必须与数据列的个数匹配。缺省默认从0开始。(2.1)一维Series类型举例【例】Series用法示例——创建Series,用来统计资产负债表中货币资金项目各科目金额:importpandasaspd

#导入pandas模块data=[5260,16000,1480]

#用列表提供数据index=['库存现金','银行存款','其他货币资金']#用列表提供索引#以上为数据准备的步骤,分别为创建Series的元素值和标签准备数据。#以下为创建Series的几种方法:#1.方法一,用列表创建Series,自定义索引。zj=pd.Series(data,index) #创建了一个Series一维表格zjprint(zj) #输出Series表格zj【代码说明】(1)data参数指明Series包含的元素,zj的元素为5260160001480(2)index参数指明每个元素的标签(3)可以认为zj是个记录了三个货币资金项目的一维表格(2.1)一维Series类型举例#2.方法二,用列表创建Series,不定义索引。zj2=pd.Series(data) #创建了一个Series一维表格zj2print(zj2)

#输出Series表格zj2运行结果:0526011600021480【代码说明】:如果省略标签index参数,则三个元素的标签就采用默认值0、1、2。#3.方法三,用字典创建Series,字典作为数据列。kemu={1001:'库存现金',1002:'银行存款',1012:'其他货币资金'}zj3=pd.Series(kemu)print(zj3)运行结果:1001库存现金1002银行存款1012其他货币资金【代码说明】(1)此时,字典的key会作为索引列,因此不需要再写index索引列。(2)结果注释:字符类型的列都是object类型。DataFrame是pandas模块中最重要的数据类型。DataFrame相当于一张完整的Excel表格,是一个带行、列标签的二维表格。pandas的核心功能就是在二维表格DataFrame上做各种操作。(2.2)二维DataFrame类型DataFrame的定义规则:pd.DataFrame(data=[列表],columns=[列表],index=[列表]) #data为数据列,columns=是指定列索引[列表],index=是指定行索引[列表](1)data数据部分:由多行数据组成的列表。(2)columns列索引列表,缺省默认从0开始。(3)index行索引列表,缺省默认从0开始。(2.2.1)DataFrame的定义【例】DataFrame用法示例——创建DataFrame用来储存职工薪酬信息:importpandasaspd #导入pandas模块#定义数据部分,此处定义了3行数据salary=[[199905,'张鹏','女',5600,3200,2800], [200101,'秦晓梅','女',5300,3000,2600], [201801,'任东海','男',4800,2800,2400]]#方法1:不自定义行索引和列索引,仅指定数据部分。df=pd.DataFrame(salary)print(df)运行结果:(2.2.1)DataFrame的定义#方法2:自定义行索引或者列索引。lie=['工号','姓名','性别','基本工资','绩效工资','加班工资']#定义列索引,即每列数据的列标题hang=[1,2,3]#定义行索引,即每行数据最左侧的序号df=pd.DataFrame(data=salary,columns=lie,index=hang)#定义三个参数齐全的DataFrame二维表print(df)#输出二维表df运行结果:【知识拓展】创建二维DataFrame表时,pd.DataFrame()的三个参数部分data,columns和index,其中数据部分data必须要有,行/列索引可有可无。行/列索引若是有,则采用指定的索引;若是无,则采用默认值。这三部分的书写顺序没有严格的要求,只要写明data=,columns=,index=这样的关键字即可。但是,行索引和列索引必须与数据行数和列数的个数匹配,否则将出错。(2.2.1)DataFrame的定义(1)获取单列:df['列名'] #例如df['姓名'](2)获取多列:df[['列名1'],['列名2']] #注意括号是两层(3)获取多行:df[m:n]【说明】m和n采用默认行索引,与自定义指定的index无关;采用前闭后开的规则,例如df[0:2]选取0、1行,即第1、2行。(4)按照条件筛选行:df[(df['列1']==条件)] #条件前面书写比较运算符,如>=,<=等df[(df['列1']==条件1)&(df['列2']>=条件2)]]【注意】多列条件之间可以使用&(并且)、|(或者)等逻辑运算符。获取前n行:df.head(n) #不写n时默认前5行;n=3时,获取前3行获取后n行:df.tail(n) #不写n时默认后5行(2.2.2)DataFrame数据的直接读取【例】DataFrame用法示例——输出DataFrame数据获取单列和多列进行输出:print(df['姓名']) #输出'姓名'列的值print(df[['姓名','性别']]) #输出'姓名'、'性别'两列的值,注意写法运行结果:获取前几行/后几行进行输出:print(df.head(2)) #输出前2行print(df.tail(2)) #输出后2行运行结果:(2.2.2)DataFrame数据的直接读取以下代码对索引进行了条件筛选,输出符合条件的行:print(df[(df['性别']=='女')])print(df[(df['性别']=='女')&(df['基本工资']>=5500)])运行结果:以下代码按照默认行索引读取多行,行号采用默认索引,且前闭后开:print(df[0:2]) #选取0、1行print(df[1:3]) #选取1、2行运行结果:(2.2.2)DataFrame数据的直接读取以下代码分解输出了DataFrame的数据部分、列索引和行索引:print(df.values)print(df.columns)print(df.index)这三行代码的运行结果:(2.2.2)DataFrame数据的直接读取可以使用loc索引器读取数据,loc索引器内只能使用自定义索引,如果没有自定义索引,则按照原始索引。根据index和column进行选取。常见形式:(1)读取单行:df.loc[行号]#例如df.loc[2],读取自定义行号为2的行(2)读取多行多列:df.loc[[行号1,行号2,…],['列1','列2',…]](3)按列条件选取行列:df.loc[(df.['列']>条件),['列1','列2',…]](4)读取连续行,连续列:df.loc[行号1:行号2,'列1':'列2'](2.2.3)DataFrame数据的间接读取【例】DataFrame用法示例——间接读取DataFrame数据importnumpyasnp #导入numpy模块importpandasaspd #导入pandas模块salary=[[199905,'张鹏','女',5600,3200,2800],[200101,'秦晓梅','女',5300,3000,2600],[201801,'任东海','男',4800,2800,2400],[201901,'尚大海','男',4600,2200,2800],[202101,'李思燃','女',4300,3000,3600]]lie=['工号','姓名','性别','基本工资','绩效工资','加班工资']hang=[1,2,3,4,5] #自定义行索引,其行号允许重复df=pd.DataFrame(data=salary,columns=lie,index=hang)print(df)这段代码的运行结果:(2.2.3)DataFrame数据的间接读取以下代码输出指定行号的行,即自定义索引为2的行,若行号重复,则输出所有行索引为2的行,即输出多行:print(df.loc[2])以上代码的运行结果:以下代码输出自定义索引为1,2,3的行,注意索引全闭合print(df.loc[1:3])运行结果:以下代码输出指定索引行和列的数据:print(df.loc[[1,3,5],['姓名','加班工资','绩效工资']])print(df.loc[[2,3],['姓名','工号','加班工资']])以上代码的运行结果:(2.2.3)DataFrame数据的间接读取以下代码输出按列条件选取‘性别’为‘男’的3列信息:print(df.loc[(df['性别']=='男'),['姓名','性别','加班工资']]) 以下代码输出位置连续的多行多列数据,注意自定义索引全闭合,即输出2、3、4行,'姓名'、'性别'、'基本工资'、'绩效工资'列的数据:print(df.loc[2:4,'姓名':'绩效工资'])运行结果:【知识小结】DataFrame数据的直接读取df[m:n]时,按照默认索引,且索引值前闭后开,即不包含n;间接读取的df.loc[m:n]优先按照自定义索引,且索引值是全闭合的,即包含n,要注意区分。另外,在按照条件筛选数据时,条件部分要用小括号括起来。(2.2.3)DataFrame数据的间接读取我们通常使用读取到的DataFrame数据的进行简单计算。假设需要根据下面已知的DataFrame数据和计算公式,计算得到'应发工资'、'扣费'和'实发工资',并将结果添加到原始的数据上。计算公式如下:应发工资=基本工资+绩效工资+加班工资扣费=应发工资*0.1实发工资=应发工资-扣费【例】DataFrame用法示例——DataFrame数据的计算importpandasaspd #导入pandas模块salary=[[199905,'张鹏','女',5600,3200,2800],[200101,'秦晓梅','女',5300,3000,2600],[201801,'任东海','男',4800,2800,2400],[201901,'尚大海','男',4600,2200,2800],[202101,'李思燃','女',4300,3000,3600]]lie=['工号','姓名','性别','基本工资','绩效工资','加班工资']hang=[1,2,3,4,5] #自定义行索引,行号允许重复df=pd.DataFrame(data=salary,columns=lie,index=hang)print(df)(2.2.4)DataFrame数据的计算以下代码计算出每人的'应发工资',并将结果作为新的一列添加到原始数据表df上:df['应发工资']=df['基本工资']+df['绩效工资']+df['加班工资']print(df)输出添加了'应发工资'列的df数据表df['扣费']=df['应发工资']*0.1df['实发工资']=df['应发工资']-df['扣费']#以上两行代码计算出每人的'扣费'和'实发工资',顺序添加到原始数据dfprint(df)输出最终结果:(2.2.4)DataFrame数据的计算(1)添加一行:df.loc[新行号]=数据列表(2)添加一列:df[‘新列名’]=数据列表(3)插入一列:df.insert(i,'新列名',数据列表)#新位置i是一个默认的列索引,例如0,是作为第1列插入(4)删除一列:df.drop('列名',axis=1,inplace=True)(5)删除一行:df.drop(行号,axis=0,inplace=True)#优先使用自定义行号,若未自定义,则采用默认行号(6)删除多列:df.drop(['列1','列2',…],axis=1,inplace=True)(7)删除多行:df.drop([行号1,行号2,…],axis=0,inplace=True)【说明】(1)做删除操作时,drop函数的参数axis表明了删除的方向,决定删除行还是删除列,axis=1是删除列;axis=0是删除行。(2)参数inplace=True表示原地删除,即df会发生变化,即不生成新的DataFrame表;若值为False,则df不会发生变化,drop函数返回一个新的DataFrame表,内容是df经过删除操作后的表。(2.2.5)DataFrame数据的修改与增删【例】DataFrame用法示例——DataFrame数据的修改与增删importpandasaspd #导入pandas模块salary=[[199905,'张鹏','女',5600,3200,2800],[200101,'秦晓梅','女',5300,3000,2600],[201801,'任东海','男',4800,2800,2400],[201901,'尚大海','男',4600,2200,2800],[202101,'李思燃','女',4300,3000,3600]]lie=['工号','姓名','性别','基本工资','绩效工资','加班工资']hang=[1,2,3,4,5] #自定义行索引,其行号允许重复df=pd.DataFrame(data=salary,columns=lie,index=hang)print(df)定义并输出DataFrame二维表df的原始数据:(2.2.5)DataFrame数据的修改与增删df.loc[6]=[201802,'李金萌','女',4600,3500,2200]#以上代码添加了一行,行号为6df.insert(2,'工龄',[24,21,4,3,1,4])#以上代码插入一列'工龄'并赋值,插入位置为列号2df['工龄工资']=df['工龄']*200#假设工龄工资=工龄*2,计算并添加一列'工龄工资'。print(df)

#输出添加行列以后的df表,结果为:df.drop('加班工资',axis=1,inplace=True)#删除df数据表中'加班工资'列的数据,剩余7列不变df.drop(1,axis=0,inplace=True)#删除df数据表中行号为1的行,剩余5行不变print(df)输出删除行列以后的df表:(2.2.5)DataFrame数据的修改与增删df.drop([3,5],axis=0,inplace=True)#删除df数据表中行号为3和5的两行,仅剩余3行df.drop(['工号','基本工资'],axis=1,inplace=True)#删除df数据表中'工号'和'基本工资'两列的数据,剩余5列print(df)输出删除行列以后的df表:(2.2.5)DataFrame数据的修改与增删pandas可以将读取到的表格型数据(文件不一定是表格)转成DataFrame类型的数据结构,然后我们可以通过操作DataFrame进行数据分析,数据预处理以及行和列的操作等。pandas支持读取非常多类型的文件,我们以财务工作中常用的excel文件的读取和写入作为重点来讲解。用pandas读写扩展名是“.xlsx”的Excel文档,需要使用命令pipinstallopenpyxl安装OpenPyXL库。读写扩展名是“.lsx”的老Excel文档,需要安装Xlrd库和Xlwt库。安装以后,使用第三方库时还需要再使用import导入。(2.2.6)用pandas读写Excel文档pandas的read_excel函数可以读取Excel文件。函数及必要参数如下:pd.read_excel(iofilename,sheet_name=0,index_col=None,converters=None)除了第一个参数是文件名不可缺省,其他参数都有默认值。大多数参数这里并未列出。sheet_name指明了要读取的工作表名。参数sheet_name的取值有两种写法,一种写为['表名'],表示要读取此表中的数据;一种写为整数n,表示读取文件中第n各工作表的数据(n从0开始算)。()用pandas读Excel文档若参数index_col=n表示取工作表中第n列(n从0开始算)的各个单元值作为行索引。如果不想这么做,则应该让index_col=None,这样DataFrame的行索引就是默认的0,1,2,…。converters的功能是强制规定指定列的数据类型,其格式为字典,例如指定金额为float,订单编号为str,converters={‘金额’:float,‘订单编号’:str}。()用pandas读Excel文档【例】读取文件“工龄工资.xlsx”,输出文件内容。importpandasaspd #导入pandas模块importopenpyxlasxl #导入Excel读写模块openpyxldf=pd.read_excel('工龄工资.xlsx',sheet_name='工龄工资')#打开文件'工龄工资.xlsx',读取'工龄工资'工作表内的数据到dfprint(df)输出存入DataFrame表df的Excel文件内容,行索引为默认值()用pandas读Excel文档程序继续,进一步要求:再次读取文件,把工号作为行索引,并将工龄工资转换为浮点类型。df=pd.read_excel('工龄工资.xlsx',sheet_name='工龄工资',index_col='工号',converters={'工龄工资':float})print(df)输出DataFrame表df的内容:()用pandas读Excel文档pandas的to_excel函数可以将DataFrame格式的数据写入Excel文件,若文件名已存在,则多次写入同一个文件都是覆盖原有文件,而不是往文件里面新增一个工作表。函数及必要参数如下:df.to_excel(filename,sheet_name=['表名'],index=None)第一个参数是新文件名,第二个参数sheet_name给要写入的工作表命名。第三个参数index表示是否将行索引写入新文件,默认为index=True,即将行索引写入新文件;若index=None,则不将行索引写入新文件。()用pandas写Excel文档例】pandas写入Excel文件用法示例:备份文件“工龄工资.xlsx”到备份文件中。importpandasaspd #导入pandas模块importopenpyxlasxl #导入Excel读写模块openpyxldf=pd.read_excel('工龄工资.xlsx',sheet_name='工龄工资')#打开文件'工龄工资.xlsx',读取'工龄工资'工作表内的数据到dfprint(df)输出DataFrame表df的内容,采用默认行索引:()用pandas写Excel文档①使用to_excel函数的默认参数写入备份文件1:df.to_excel('工龄工资_备份1.xlsx',sheet_name='备份')②给to_excel函数添加一个参数,再次写入备份文件2:df.to_excel('工龄工资_备份2.xlsx',sheet_name='备份',index=None)#分别读出两个备份文件,输出结果df1=pd.read_excel('工龄工资_备份1.xlsx',sheet_name='备份')df2=pd.read_excel('工龄工资_备份2.xlsx',sheet_name='备份')()用pandas写Excel文档print(df1)文件“工龄工资_备份1.xlsx”内容:()用pandas写Excel文档print(df2)文件“工龄工资_备份2.xlsx”内容:我们发现,从同一文件中读取的数据df,在写入备份1文件时,默认将自动行索引0~5写入新文件中,即A列中存放了行索引;而添加了参数index=None的df.to_excel函数,则禁止将行索引写入备份2文件。注意,打开的Excel文件要及时关闭。在Excel文件打开状态下读写该文件,会引起报错。(2.2.7)DataFrame数据的连接与合并作为专业的财务数据分析人员,一定要学会数据的连接与合并这项必备的核心技能。在Python中,pandas.merge()方法可根据一个或多个键将两张表的数据按行连接起来,pandas.concat()方法可以沿着一条轴将多个对象合并到一起。使用merge()方法进行数据表连接时,可以根据一个或多个键将不同的DataFrame类型数据按行连接起来。为方便描述,以下对于参与合并的两个DataFrame类型数据简称左表和右表。连接以后,很可能出现空值。空值的位置一般表示为NaN,若为日期型的空值则表示为NaT。()使用merge()方法进行连接merge()方法的格式:merge(left,right,how='outer',on=…,left_on=…,right_on=…)merge()方法的常用参数参数解释left与right参与合并的两个DataFrame类型数据,以下简称左表和右表how合并的方式,有inner(内连接),left(左外连接),right(右外连接),outer(全外连接),默认为inneron用于连接的列索引名称,必须存在于左表和右表中,如果没有指定且其它参数也未指定,则以两表重叠列名做为连接键left_on左表中用作连接键的列名。当两表中没有相同列名,但有含义相同的列时,就可以使用这个参数right_on与left_on配合使用,右表中用作连接键的列名merge连接的几种方式:

()使用merge()方法进行连接【例】使用merge()方法进行数据连接的用法示例:importpandasaspd#导入pandas模块#首先进行数据准备salary1=[['张鹏',24],['秦晓梅',21]]salary2=[['张鹏',5600],['尚大海',4600],['李金萌',4600]]#接着,使用代码生成数据表df1和df2df1=pd.DataFrame(data=salary1,columns=['姓名','工龄'])df2=pd.DataFrame(data=salary2,columns=['姓名','基本工资'])#输出原始数据表,左表和右表print(df1)print(df2)输出结果为:()使用merge()方法进行连接下面开始对数据表进行merge()的各种连接1.内连接df3=pd.merge(df1,df2) #默认以两表重叠的列名做为连接键,即姓名相同的行连接在一起,求交集;print(df3)这是默认的内连接,其输出效果:相同效果,代码也可以写作:df3=pd.merge(df1,df2,how='inner',on='姓名')2.外连接,其中参数on='姓名'为默认的,可以省略:df4=pd.merge(df1,df2,how='outer',on='姓名')print(df4)其输出效果:【代码说明】外连接生成的表df4包含了连接键所有不同取值的行和所有不同名的列遇到空值的位置,记作NaN。()使用merge()方法进行连接当左右两表中的列名不相同时,需要用left_on和right_on进行设置:df2=pd.DataFrame(data=salary2,columns=['职工姓名','基本工资'])df5=pd.merge(df1,df2,left_on='姓名',right_on='职工姓名')print(df5)df1中的'姓名'和df2中的'职工姓名'作为连接键,默认内连接df6=pd.merge(df1,df2,how='outer',left_on='姓名',right_on='职工姓名')print(df6)df1中的'姓名'和df22中的'职工姓名'作为连接键,使用了外连接【代码说明】外连接生成的表df6包含了连接键所有不同取值的行和所有不同名的列;遇到空值的位置,记作NaN。()使用merge()方法进行连接3.左连接,保留左边df1中所有行,如果有列中没有数据则以NaN填充df7=pd.merge(df1,df2,how='left')print(df7)4.右连接,保留左边df2中所有行,如果有列中没有数据则以NaN填充df8=pd.merge(df1,df2,how='right')print(df8)()使用merge()方法进行连接如果想对数据表进行简单的“合并”,也可以称为“拼接”或者“堆叠”,要使用concat()方法。concat()方法可以指定按某个轴进行连接,可以指定连接的方式(outer,inner两种)。连接以后,若出现空值,同样表示为NaN,或者日期型空值NaT。concat()方法的基本格式:concat(objs,axis=0,join=‘outer’,…)()使用concat()方法进行数据合并concat()方法的常用参数参数解释objs参与连接的对象列表,唯一必须给定的参数。例如[df1,df2]axis指明连接的轴向,0是纵轴,1是横轴;默认是0,即上下合并join连接方式,“inner”、“outer”,默认是“outer”;“inner”是交集,“outer”是并集ignore_index重建索引,默认False不重建ignore_index=True,重建索引,重建后会把自定义索引删除sort默认为True,将合并的数据进行排序,设置为False可提高性能()使用concat()方法进行数据合并使用concat()方法进行数据合并的用法示例:importpandasaspd#导入pandas模块#首先进行数据准备salary1=[['张鹏',24],['秦晓梅',21]]salary2=[['张鹏',5600],['尚大海',4600],['李金萌',4600]]#接着,使用代码生成数据表df1和df2df1=pd.DataFrame(data=salary1,columns=['姓名','工龄'])df2=pd.DataFrame(data=salary2,columns=['姓名','基本工资'])#输出原始数据表,两表均采用了默认索引(0,1和0,1,2)print(df1)print(df2)()使用concat()方法进行数据合并继续上面的代码,下面开始进行concat数据表合并操作:①上下合并:直接上下拼接在一起,空值的位置表示为NaNshangxia=pd.concat([df1,df2],axis=0)print(shangxia)【代码说明】axis=0是纵向合并,索引0,1和0,1,2也直接拼接;数据行则直接堆砌在一起,行数为行数之和,包含所有的列。上下合并后生成的表shangxia的输出效果:()使用concat()方法进行数据合并②左右合并:直接左右拼接在一起,空值的位置表示为NaNzuoyou=pd.concat([df1,df2],axis=1)print(zuoyou)#axis=1是横向合并,按照行索引值相等拼接在一起#因为是默认行索引,索引0和0,1和1的拼在一行#数据列直接堆砌在一起,包含所有的列#左右合并后生成的表zuoyou的输出效果:()使用concat()方法进行数据合并③内连接:求交集在concat连接中,加上参数join='inner',得到的是两表对象的交集,如果是join='outer',得到的是两个表对象的并集,默认是“outer”。对照以下示例进行理解。shangxia2=pd.concat([df1,df2],axis=0,join='inner')print(shangxia2)加上join='inner'参数的上下合并,只留下同名的列,输出效果:因默认是外连接join='outer',所以只要没有join='inner'的都是外连接。因此为避免重复,外连接不再单独举例。其他参数可以查阅相关资料学习。()使用concat()方法进行数据合并①merge只能横向连接,concat可以实现横向/纵向拼接②merge只能操作两张表,concat可以操作多张表③merge操作的两张表分开写,concat操作的多张表写在一个列表中④merge默认是内连接,concat默认是外连接⑤merge的连接方式用how控制,how有left/right/inner/outer;⑥concat的连接方式用axis和join控制,axis有0/1(0:列,上下合并;1:行,左右合并),join有inner/outer⑦merge合并的范围广泛,可以通过索引/列关联,concat合并的范围小,只支持索引的合并⑧concat只是单纯的进行表合并,merge可以过滤后进行连接(2.2.7)merge和concat的区别我们都熟悉办公软件中的电子表格,其中的分类汇总和数据透视表功能强大。分类汇总可以对数据进行静态的统计和分析,数据透视表则可以对数据动态排布并且多角度分类汇总。pandas的数据汇总主要有groupby函数和pivot_table函数。groupy()主要实现按列分组统计,就是电子表格的分类汇总功能;pivote_table()主要实现二维的分组统计,就是电子表格的数据透视表功能。(2.2.8)DataFrame数据汇总(1)使用groupy()函数实现分组统计groupy()函数实现的分组统计,就是电子表格的分类汇总功能,对数据进行按列分组以及分组后的组内运算;需要指定分组的列、值和对值的计算方式(计数、合计、平均等)。只有数字类型的列数据才会计算统计。groupy()函数的语法格式:df.groupby([属性列表]).计算方式属性列表中列出了分组的列名称,列名称若为多个,要书写为列表格式(即写在[]里面,若只有一个列名称,不需要写[]),每个列名称上要使用引号;(2.2.8)DataFrame数据汇总常用计算方式有求和sum(),平均值mean(),最大值max(),最小值min(),计数count()或者len()。使用groupy()进行分组统计的用法示例:importpandasaspd#导入pandas模块#构建原始数据表dfinfo=[['小明','男',1,170],['晓梅','女',2,165],['东海','男',1,176],['大海','男',2,178],['金萌','女',1,170]]lie=['姓名','性别','班级','身高']df=pd.DataFrame(data=info,columns=lie)print(df)原始数据表df输出结果为:(2.2.8)DataFrame数据汇总①对所有的列计数汇总:print(df.groupby('班级').count())#按照班级列对所有列进行汇总计数输出结果为:print(df.groupby('性别').count())#按照性别列对所有列进行汇总计数输出结果为:(2.2.8)DataFrame数据汇总②对单个字段进行分组汇总:print(df.groupby('性别')['班级'].count())#按性别分组,对班级字段进行汇总计数输出结果为:print(df.groupby('性别')['身高'].mean())#按性别分组,对身高字段进行计数求平均值输出结果为:③对两个字段进行分组汇总print(df.groupby(['性别','班级'])['姓名'].count())#汇总不同性别不同班级的人数输出结果为:(2.2.8)DataFrame数据汇总(2)使用pivote_table()函数实现数据透视表功能数据透视表功能,能够分析庞大数据,更好地发掘数据特征之间的关系,且不破坏原有数据;只要指定行、列、值和值的计算方式(计数、合计、平均等),就可以做出一个数据透视表来,方便我们分析数据的一些潜在价值。pivote_table()函数的语法格式:df.pivot_table(index=None,columns=None,values=None,aggfunc=’mean’,fill_value=0,margins=False,margins_name=’All’)(2.2.8)DataFrame数据汇总(2.2.8)DataFrame数据汇总pivote_table()函数的常用参数参数含义实例index=None数据透视表的行,必须有index='部门'columns=None数据透视表的列columns='职称'values=None数据透视表的值,默认所有数字列values='销售额'aggfunc=’mean’值计算方式默认是mean平均值fill_value=NoneNaN用什么填充默认不填充,可以用0填充fill_value=0margins=False是否汇总margins=True时汇总margins_name=’All’汇总栏命名margins_name=’Total’使用pivote_table()进行数据透视表功能的用法示例:importpandasaspd#导入pandas模块#构建原始数据表dfinfo=[['张鹏','女',1,170,3500],['晓梅','女',2,165,2000],['东海','男',1,176,4000],['大海','男',2,178,1500],['金萌','女',1,170,4000],['士发','男',2,185,7500],['欧阳','男',2,180,8000]]lie=['姓名','性别','部门','身高','奖金']df=pd.DataFrame(data=info,columns=lie)print(df)原始数据表df输出结果为:(2.2.8)DataFrame数据汇总df2=df.pivot_table(index='部门',columns='性别',values='奖金')#生成数据透视表df2,以汇总各部门、不同性别人员、奖金的平均值#行:部门,列:性别,值:奖金,计算方式:默认为求平均值print(df2)输出结果为:(2.2.8)DataFrame数据汇总df3=df.pivot_table(index='部门',columns='性别',values='奖金',aggfunc='max')#生成数据透视表df3,汇总各部门、不同性别人员、奖金的最大值print(df3)输出结果为:df4=df.pivot_table(index='部门',columns='性别',values='奖金',aggfunc='max',margins=True,margins_name='最高奖金')#生成数据透视表df4,汇总各部门、不同性别人员、奖金的最大值#结果中要求对结果再汇总,汇总的标题为“最高奖金”print(df4)输出结果为:(2.2.8)DataFrame数据汇总df5=df.pivot_table(index='部门',values=['奖金','身高'])#汇总各部门中,奖金和身高的平均值,多个汇总对象要写为列表的格式print(df5)输出结果为:df6=df.pivot_table(index=['部门','性别'],values=['奖金'],aggfunc='sum',margins=True,margins_name='奖金合计')#汇总各部门、不同性别人员、奖金之和#要求对结果再汇总,汇总的标题为'奖金合计'print(df6)输出结果为:(2.2.8)DataFrame数据汇总(3)matplotlib模块数据可视化是以图形或图表的形式展示数据。数据可视化后,可以更加直观地帮助人们快速地理解数据,发现数据的关键点。数据可视化技术是关于数据视觉表现形式的科学技术研究。主要指的是较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。Python语言有丰富的、功能强大的、第三方库的支持,在数据可视化方面具有较强的功能。数据可视化对于数据描述及探索性分析至关重要。恰当的统计图表可以更有效地传递数据信息。Python中已经有很多可视化方面的第三方库,如matplotlib、pyecharts、pandas等。matplotlib是一个Python绘图库,已经成为公认的数据可视化工具。通过matplotlib可以很轻松地画一些或简单或复杂的图形,几行代码即可生成折线图、直方图、条形图、散点图等,使用方便简单。(3.1)matplotlib模块简介因为绘图之前还会进行数据处理,需要用到pandas模块,因此通常在绘图之前需要依次导入以下两个模块:importpandasaspdimportmatplotlib.pyplotasplt后面将直接使用这些模块,不再重复导入。另外,在使用matplotlib模块绘图输入中文数据时,经常出现乱码,所以要会设置中文字体,以下两行代码可以直接使用,一般不需要修改,实例中也不再重复书写。plt.rcParams['font.family']='SimHei'plt.rcParams['axes.unicode_minus']=False(3.1)matplotlib模块简介1.创建一个画布(figure)。2.在画布上创建一个或多个绘图(plotting)区域(坐标系/坐标轴)。3.使用相应的绘图函数在plotting区域上描绘点、线等图形。

常用绘图函数:(3.2.1)matplotlib绘图的基本步骤函数示例功能plt.figure(figsize=(4,3))设置画布的大小,宽度4,高度3plt.xlim((0,4))plt.ylim((0,3))设置x轴显示范围为(0,4)设置y轴显示范围为(0,3)plt.xlabel('省份')plt.ylabel('产量')设置x轴标题为'省份'设置y轴标题为'产量'plt.plot(x,y)绘制折线图plt.bar()绘制条形图plt.hist()绘制直方图plt.scatter(x,y)绘制散点图plt.pie()绘制饼图plt.boxplot()绘制箱形图1.绘制折线图使用matplotlib模块绘制折线图用法示例:#要求:使用已知点坐标绘制折线图importpandasaspd

importmatplotlib.pyplotasplt#设置中文字体plt.rcParams['font.family']='SimHei'plt.rcParams['axes.unicode_minus']=False【注意】以上5行代码后面的例子中将不再赘述。#创建一个6*4的画布plt.figure(figsize=(5,4))(3.2.2)matplotlib图形的分类及绘制方法#设定已知点坐标数值,例如(-1,3),(0,2)x=[-1,0,1,2,3]y=[3,2,2,4,2]plt.plot(x,y) #以折线图展示#设置坐标轴显示范围plt.xlim((-1,3))plt.ylim((1,4))#设置坐标轴标题plt.xlabel('x轴')plt.ylabel('y轴')plt.show() #显示图形2.绘制条形图使用matplotlib模块绘制条形图用法示例:#要求:使用已知数据绘制条形图#前面省略5行代码,见上例#下面是已知数据:2021年四大一线城市GDP水平GDP=[40270,43215,28232,30665]city=['北京市','上海市','广州市','深圳市']#绘制条形图plt.bar(city,GDP)plt.show()(3.2.2)matplotlib图形的分类及绘制方法#设置y轴范围plt.ylim(10000,50000)#设置坐标轴标题plt.xlabel('城市')plt.ylabel('GDP水平')#设置图表标题,默认显示在图表上方plt.title("2021年四大一线城市GDP水平对比")#显示图形在实际应用中,我们可以使用Excel文档中的数据绘制图形。步骤1:读取Excel文件并查看步骤2:根据要求绘制图形步骤3:将多个图形一同显示【例】使用Excel文档中的数据绘制图形用法示例,要求:使用Excel文档中的数据绘制直方图:#导入必要模块,读取文件,查看读取的内容#前面省略5行代码,见上例(3.2.2)matplotlib图形的分类及绘制方法#导入Excel读写模块openpyxlimportopenpyxlasxl#读取Excel文件'员工档案表.xlsx'df=pd.read_excel('员工档案表.xlsx')#展示文件前5行print(df.head())接下来绘制图形--直方图,统计职工年龄分布情况:#创建画布plt.figure(figsize=(16,12))#使用hist画直方图,并设置参数(绘图的内容、边框颜色、图例标题)#根据文件中‘年龄’数据,绘制直方图,黑色描边,图例标题‘人数’plt.hist(df['年龄'],edgecolor='k',label='人数')#设置图表标题,默认显示在图表上方(3.2.2)matplotlib图形的分类及绘制方法plt.title('年龄分布直方图')#使图例显示plt.legend()#显示图形plt.show()显示效果3.绘制饼图接上例,也可以使用matplotlib模块绘制饼图,统计职男女职工占比情况:#计算男女人数总和x1=df['性别'].value_counts()#设置画布大小plt.figure(figsize=(4,4))#绘制饼状图(内容,显示名称,显示比例)plt.pie(x1,labels=x1.index,autopct='%.2f%%')(3.2.2)matplotlib图形的分类及绘制方法#设置图表标题,默认显示在图表上方plt.title('男女职工占比')#显示图形plt.show()4.将多个图像一同显示为了方便比较和分析,可以将多个图形一同显示,接上例,将多个图形一同显示在一张画布上:#创建画布plt.figure(figsize=(10,4))#1.绘制第一个图形--直方图#在画布上为直方图规划显示位置:121tu1=plt.subplot(121)plt.hist(df['年龄'],edgecolor='k',label='人数')plt.title('年龄分布直方图')plt.legend()(3.2.2)matplotlib图形的分类及绘制方法#2.绘制第二个图形--饼图,计算男女人数总和x1=df['性别'].value_counts()#在画布上为饼图规划显示位置:122tu2=plt.subplot(122)#绘制饼状图(内容,显示名称,显示比例)plt.pie(x1,labels=x1.index,autopct='%.2f%%')#设置图表标题,默认显示在图表上方plt.title('男女职工占比')#显示画布上的所有图形plt.show()(4)pyecharts模块Echarts是一个由百度开源的数据可视化框架,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生了。pyecharts可以展示动态图,在线报告等,比较美观且展示数据方便,鼠标悬停在图上,即可显示数值、标签等,甚至单击标签实现部分图形的关闭与打开,效果非常酷炫。(4.1)pyecharts模块首先,使用命令

温馨提示

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

评论

0/150

提交评论