




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引入案例任务分析知识解析案例解析任务实训实训评价4.3.1map()函数4.3.2apply()函数4.3.3applymap()函数任务4.3
利用Pandas高阶函数进行数据处理任务4.3
利用Pandas高阶函数进行数据处理引入案例根据企业销售统计表.xlsx(位置:E:\file\),美创科技有限公司决定对销售人员的销售业绩进行考核和奖励,根据销售额是否超过45万,将销售人员的销售业绩定为达标和未达标。如果未达标,销售奖金为0;如果达标,销售额低于50万的销售人员的销售奖金为销售额的1%,销售额高于等于50万的销售人员的销售奖金为销售额的1.5%。财务人员小王如何在Pandas模块中实现呢?任务分析本任务利用Pandas模块中的map()函数、apply()函数、applymap()函数实现对DataFrame对象的逐行、逐列或逐元素的操作,实现了对数据的灵活处理,也提高了程序的运行速度。任务4.3利用Pandas高阶函数进行数据处理任务4.3利用Pandas高阶函数进行数据处理知识解析在日常的数据处理中,经常会对一个DataFrame进行逐行、逐列或逐元素的操作,可能首先想到的是用循环结构来处理这类问题,但是这样做显然也失去了使用Pandas数据结构的优势,并且也会使你的程序运行性能速度大大降低。而使用Pandas中的map()、apply()和applymap()函数无需通过循环就可以满足数据处理需求。4.3.1map()函数map()函数可以用于Series对象或DataFrame对象的一列,接收函数或字典对象作为参数,对指定序列逐一映射,返回经过函数或字典映射处理后的值。其语法格式如下:Series.map(functionordict,na_action=None)map()函数参数说明:functionordict:可接收lambda表达式、自定义函数(def)、Python内置函数和字典;na_action:默认na_action=None,表示将函数应用于缺失值,na_action='ignore'表示忽略缺失值,即函数不应用于缺失值(并将其保留为NaN)。任务4.3利用Pandas高阶函数进行数据处理【做中学4.3.1】读入fin_data.xlsx(位置:E:\file\)中的“利润表项目”工作表,据此计算出净利润率,然后进行以下操作:(1)根据净利率进行业绩评价,使用map()函数将净利率超过20%的月份标记为达标,否则不达标;(2)根据业绩评价结果确定是否发放奖金,业绩达标则发放,否则不发放。读入Excel表格并计算净利润率。程序如下:importpandasaspd#引入pandas模块#读取“利润表项目”工作表df=pd.read_excel(r'E:\file\fin_data.xlsx',sheet_name=1,converters={'年':str,'月':str})df['净利率']=df['净利润']/df['营业收入’]#计算净利率df.head()#查看前5行数据STEP01【做中学4.3.1】解析如下:任务4.3利用Pandas高阶函数进行数据处理使用Series.map(function)的形式进行业绩评价。程序如下:df['业绩评价']=df['净利率'].map(lambdax:'达标'ifx>0.2else'不达标')df.head()#查看df前5行数据STEP02【请注意】map()函数的function参数不仅可以接收lambda表达式,还可以接收自定义函数(def)或python内置函数,使用函数名作为map()函数的参数。任务4.3
利用Pandas高阶函数进行数据处理
从输出结果来看,新增一列业绩评价,其值为达标或不达标,其原理是将净利润率列每个元素逐一传入lambda()函数得到返回值,如下图所示。任务4.3利用Pandas高阶函数进行数据处理使用Series.map(dict)的形式确定是否发放奖金。程序如下:df['是否发放奖金']=df['业绩评价'].map({'达标':'发放','不达标':'不发放'})df.head()#查看df前5行数据STEP03任务4.3利用Pandas高阶函数进行数据处理
从输出结果来看,新增一列是否发放奖金,其值为发放或不发放,其原理是将业绩评价列每个元素逐一传入字典作为键,返回对应的值,如下图所示。不论是利用字典参数还是函数进行映射,map()函数都是把对应的数据逐个当作参数传入到字典或函数中,得到映射后的值。任务4.3利用Pandas高阶函数进行数据处理4.3.2apply()函数一、Series.apply()
Series.apply()函数在Series值上调用函数,与Series.map()类似,区别在于apply()函数能够传入功能更复杂的函数。Series.apply()函数语法格式如下:Series.apply(func,convert_dtype=True,args=(),**kwargs)Series.apply()函数参数说明参数说明func接收函数。表示要应用的Python函数或NumPyufunc。convert_dtype接收bool,默认True。尝试为所有元素应用函数后的结果找到更好的数据类型。如果为False,则保留dtype=object。args接收元组。除了序列之外,要传递给函数的位置参数。单个元素需在括号内加逗号。**kwargs表示传递给func的其他关键字数。任务4.3利用Pandas高阶函数进行数据处理【做中学4.3.2】以【做中学4.3.1】最终生成的df数据对象为基础,现需要调整营业收入金额,而具体调整的金额未知,请使用Series.apply()函数实现营业收入的调整。【做中学4.3.2】解析如下:因需要对营业收入进行调整(加上或减去一个值),由于这个加上或减去的值未知,可使用自定义函数并需要多加一个参数,此时map()函数是不能实现的(因map()函数只有一个参数),而apply()函数可以解决这个问题。#自定义函数,返回x+y的值deff(x,y):returnx+ySTEP01STEP02#对每月营业收入调增1000,增加一列“营业成本新”df['营业收入新']=df['营业收入'].apply(f,args=(1000,))df[['营业收入','营业收入新']].head()#观察营业收入的变化任务4.3利用Pandas高阶函数进行数据处理二、DataFrame.apply()DataFrame.apply()函数语法格式如下:DataFrame.apply(func,axis=0,broadcast=None,raw=False,reduce=None,result_type=None,args=(),**kwds)DataFrame.apply()函数常用参数说明参数说明func接收函数。表示应用到每行或每列的Python函数或NumPyufunc。axis接收bool或string。表示函数应用所沿着的轴。axis=0或’index’时表示在每一列上应用函数;axis=1或’columns’时表示在每一行上应用函数。raw接收bool。确定行或列以Series还是ndarray对象传递。False:表示将每一行或每一列作为一个Series传递给函数;True:表示传递的函数将接收ndarray对象。如果你只是应用一个NumPy还原函数,这将获得更好的性能。result_type接收'expand'、'reduce'、'broadcast'和None,默认为None。只有在axis=1(列)时才会发挥作用。expand:表示列表式的结果将被转化为列。reduce:表示如果可能的话,返回一个Series,而不是展开类似列表的结果,这与expand相反。broadcast:表示结果将被广播到DataFrame的原始形状,原始索引和列将被保留。args接收元组。除了序列之外,要传递给函数的位置参数。任务4.3利用Pandas高阶函数进行数据处理1.axis=0时apply()函数的使用【做中学4.3.3】读入fin_data.xlsx(位置:E:\file\)中的“利润表项目”工作表,使用apply()函数将营业收入、营业成本、净利润以“万元”为单位展示。importpandasaspd#导入pandas模块df=pd.read_excel(r'E:\file\fin_data.xlsx',sheet_name=1,converters={'年':str,'月':str})df1=df[["营业收入","营业成本","净利润"]].apply(lambdax:round(x/10000,2))df1.head()#查看前5行数据【请注意】当apply()函数中没设置axis参数时,则默认axis=0,这时会将各列(columns)以series的形式作为参数,传入到指定的操作方法中,操作后合并且返回相应结果。【做中学4.3.3】程序如下:任务4.3利用Pandas高阶函数进行数据处理DataFrame.apply(axis=0)工作原理图任务4.3利用Pandas高阶函数进行数据处理2.axis=1时apply()函数的使用【做中学4.3.4】读入fin_data.xlsx(位置:E:\file\)中的“利润表项目”工作表,利用DataFrame.apply()函数计算每个月的毛利率。STEP01导入pandas模块并读取利润表项目,程序如下:importpandasaspddf=pd.read_excel(r'E:\file\fin_data.xlsx',sheet_name=1,converters={'年':str,'月':str})自定义函数计算毛利率,并保留2位小数,程序如下:deffunc(x):x['毛利率']=round((x['营业收入']-x['营业成本'])/x['营业收入'],2)returnxSTEP02【做中学4.3.4】解析如下:任务4.3利用Pandas高阶函数进行数据处理STEP03df1=df[['营业收入','营业成本','净利润']].apply(func,axis=1)df1.head()#查看前5行数据任务4.3利用Pandas高阶函数进行数据处理DataFrame.apply(axis=1)工作原理图任务4.3利用Pandas高阶函数进行数据处理4.3.3applymap()函数applymap()函数用来对DataFrame中的每个元素执行指定方法(函数或lambda表达式)的操作。其语法格式为:DataFrame.applymap(function)【做中学4.3.5】读入fin_data.xlsx(位置:E:\file\)中的“利润表项目”工作表,将DataFrame中的营业收入、营业成本和净利润统一保留1位小数显示。importpandasaspd#导入pandas模块df=pd.read_excel(r'E:\file\fin_data.xlsx',sheet_name=1,converters={'年':str,'月':str})df1=df[['营业收入','营业成本','净利润']].applymap(lambdax:"%.1f"%x)df1.head()#查看前5行数据【做中学4.3.3】程序如下:任务4.2利用Pandas进行财务数据筛选读入销售统计表.xlsx(位置:E:\file\)。程序如下:importpandasaspd#导入Pandas模块df=pd.read_excel(r'E:\file\销售统计表.xlsx')df.head()#查看前5行数据STEP01根据销售额进行业绩评价。程序如下:df['业绩评价']=df['销售额'].apply(lambdax:'达标'ifx>450000else'不达标')df.head()#查看前5行数据STEP02案例解析任务4.3利用Pandas高阶函数进行数据处理根据业绩评价列、销售额列计算销售奖金。程序如下:defsal_bonus(x):i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45223-2025电力厂站低压用电系统信息架构及接口技术规范
- 合肥小型商铺出租合同样本
- 公司并购合同管理与风险防范
- 心理康复师实习劳动合同
- 设计师合作开发合同模板专业版
- 标准版劳动合同范本合同
- 国际仓储业务合作合同范本
- 度中国员工境外工作劳务合同
- 供应链合作协议合同法全文
- 中小学教师职务合同范本
- 政府机关保安服务项目整体服务方案
- 酒店前台绩效考核表
- 精神发育迟滞的护理查房
- 简易施工方案模板范本
- 制作拉线课件
- 中华人民共和国文物保护单位登记表
- 不符合项和纠正措施记录表
- DBJ∕T13-354-2021 既有房屋结构安全隐患排查技术标准
- 温室大棚、花卉苗圃采暖方案(空气源热泵)
- 部编人教版五年级下册道德与法治全册知识点整理归纳
- 绘本阅读《铁丝网上的小花》
评论
0/150
提交评论