使用python对数据缺失值处理
作者:贺凯
在数据挖掘中,原始数据存在大量的不完整数据(存在缺失值),这些缺失值严重影响数据挖掘的执行效率,因此需要对不完整数据进行数据清洗,其中关于缺失值的处理,数据插补是一种重要方法。
本次学习通过使用拉格朗日插值法和牛顿插值法对某销售数据进行插值处理。在Python的Scipy库中,提供了拉格朗日插值法的函数,而牛顿插值法,则是需要编写。
下面通过某销售数据(其中存在数据缺失),使用拉格朗日-牛顿插值法对缺失值进行插补。
销售数据已上传到本人github上,请各位自行下载。
具体的拉格朗日代码如下:
此代码也已经上传至本人github上(账号,见上面图片信息),有兴趣的朋友可以自行下载参考。
Python函数
作者:高佳璇
Python包括许多内置函数(BIF)即Built-in-function。Python中的函数可以重复使用,可提高应用的模块性和代码的重复使用率。
Python中的函数,无论是命名函数,还是匿名函数。都是语句和表达式的集合。在Python中,函数是第一个类对象,这意味着函数的用法并没有限制。Python函数的使用方式就像Python中其他值一样,例如字符串和数字等。Python函数拥有一些属性,通过使用Python内置函数dir就能查看这些属性,如下代码所示:
一、重要函数属性
__doc__返回 指定函数的文档字符串;
__name__返回 函数名字;
__module__返回 函数定义所在模块的名字;
func_defaults返回 一个包含默认参数值的元组,默认参数将在后文进行讨论;func_globals返回 一个包含函数全局变量的字典引用;
func_dict返回支持任意函数属性的命名空间;
func_closure返回一个胞体元组,其中胞体包含了函数自由变量的绑定,闭包将在后文讨论。
二、函数定义
①可以定义一个任意功能的函数,以def开头,后接函数标识符名称和圆括号();
②任何传入参数和自变量必须放在圆括号中间,且圆括号之间可以用于定义参数;
③函数的第一行语句可以选择性的使用文档字符串——用于存放函数说明;
④函数内容以冒号起始,并且缩进;
⑤return用于结束参数,选择性返回一个值给调用方,不带表达式的return相当于返回None。
写好一个函数的关键点:
①明智地命名
②任务单一
③包括文档字符串
④回复一个值
⑤最好不超过50行
⑥幂等且纯粹
三、函数类型
函数可以将相关功能打包并参数化,在python中,可以创建的4种函数如下:
全局函数:全局对象(包括函数)可以由创建该对象的统一模块(同一个.py文件)中的任意代码存取调用。其他模块也可以调用存取。
局部函数:局部函数定义在其他函数内,只对对其进行定义的函数可见。
lamda函数:是一个表达式,这类函数要比通常的函数收到更多的限制。
方法:方法是与特定数据类型关联的函数,并且只能与数据类型关联在一起使用。
关于python的官方手册,可以登录python官方指南查看,着重利用,Library Reference与 Global Module Index。要着重查询某个数据类型提供了哪些属性(或方法),可以dir(str)函数获取。
参数的返回值可以是单独的一个值,也可以是一组值,还可以是组合类型的值。如果 return 不带参数,或者根本就没有使用 return 语句,那么函数将返回None。
1.默认参数
使用parameter = default可以指定函数的一个默认参数,当调用函数时,可以不传递给函数该参数而使用默认值。默认参数应当放置在位置参数之后。
给定默认值时,默认值实在定义def函数时创建的,而不是调用时创建的。
因此对于列表,字典,集合等可变数据类型,应当使用如下方式定义:
2.参数与参数拆分
(1)我们可以使用序列拆分操作符*来提供位置参数,例如,function(*list),如果列表包含的数据项多于函数的参数,则可以使用分片的方法,如下是一个使用序列拆分符号的函数形式:
(2)使用拆分操作符创建可变数量的位置参数的函数。
在函数有一个args参数,参数前有一个序列拆分符,在函数内部,参数args可以是一个元组,其项数随着给定的位置参数个数的变化而变化。我们可以将关键词参数跟在位置参数的后面:
将*本身作为参数也是可能的,用于表明在*不应该再出现位置参数,但关键字参数是允许的。
*表明,只有三个位置参数。
(3)映射操作符
我们可以使用映射操作符来对映射进行拆分,可以使用**将字典传递给函数。
赋值时,参数的名称与键对应,如果该字典包含没有对应参数的键,就会产生Type Error异常,任何参数,如果字典没有相应的项,则将其设置为默认值——如果没有默认值,就产生Type Error异常。因此利用**可以定义任意数量的关键词参数函数。
(4)存取全局范围的变量
如上所示,python处理该函数时,会先在局部(a_function())范围内进行查找,由于没有找到,有在全局(.py)范围内进行查找,并找到其定义位置。
global的用法为,告诉python,这个变量为全局变量,而不是创建一个同名的本地变量。如果没有global语句,程序也可以运行,python会在局部范围内查找,由于找不到就创建一个Language局部变量,而不改变全局的Language变量。
(5)lambda函数
lambda函数的expression不能包含分支或者循环(但允许使用条件表达式),也不能包含return或yield语句,调用lambda函数时,返回的结果是对表达式计算产生的结果。如果expression是一个元组,就应当使用()将其括起来。
(6)断言
在函数有错误或进行不正确计算时,可以使用断言进行测试,语法格式如下:
当boolen_expression为False时,产生一个Assertion Error异常,如果给定了optional expression,则将其最为Assertion Error的一个参数。
推文内容仅代表学生本人学习心得,不代表本公众号立场。该公众号平台旨在鼓励学生学习分享知识,至于对错,大家都可以留言评论,甚至给推文打分。作者也需要大家的鼓励,以及大家的宝贵的意见。
编辑:李实|李香蓉
喜欢我,记得关注、点赞、转发
领取专属 10元无门槛券
私享最新 技术干货