越学越上瘾   12.12 来百知学IT   课程全面升级

立刻报名学习

400-616-5551

您所在位置: 首页> 学习资讯> Python数据科学实践 | 函数与模块

Python数据科学实践 | 函数与模块

发布百知教育 来源:学习资讯 2019-08-27

 大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧。本期内容主要由程茜与政委联合推出。


函数




1
函数的基本使用


                         

函数还记得吗?中学的时候学过Y=f(X),给定一个X,就有唯一的Y可以求出来。比如:y=4x+1,x=2,y=9;x=1,y=5。在编程语言里,函数就不是一个表达式了,它是能实现特定功能的可重用的语句组,通过函数名来表示和调用。

Python里函数的定义


 def  函数名(<参数列表>):

            函数体

            return <返回值列表 >


函数名是Python里任何有效的标识符,也就是要符合其命名规则;参数列表是调用该函数时传递给它的值,多个参数用逗号隔开。return产生的是函数返回值,其中多条返回语句是可被接受的。如果Python达到函数的尾部时仍然没有遇到return语句,就会自动返回None。

例如:在火锅数据集中,针对每家火锅的团购价和市场价,可以编写一个能够实现参与团购能省多少钱的函数。

例1

def save_money(price, discount_price):    balance = price - discount_price    return balance

这里save_money是函数名,然后有两个形式参数,price和discount_price。函数体部分执行的是 balance = price -discount_price,最后函数返回的是 balance 的值。这样就定义了一个能实现计算省钱功能的函数。


2
函数的调用





定义后的函数不能直接运行,需要经过“调用”才能得到运行。基本方法:

函数名(实际赋值参数列表)

例2

coupon["差额"] = save_money(price=coupon['市场价'], discount_price=coupon['团购价'])coupon.iloc[4,]

 

结果如图所示:



2.png


调用参数是“市场价”与“团购价”的save_money函数。当函数调用发生时,才开始执行函数的内容。“市场价”赋值给price,“团购价”赋值给discount_price,然后计算差额返回给balance。很容易能够发现六婆串串香火锅团购的话可以省15元。

函数的参数传递

函数调用时,默认采用按照位置顺序的方式传递给函数,就像刚才计算差额的save_money函数一样,按照顺序传递。当然,Python中还可以按照参数名称传递,例如:

例3

coupon["差额"]=save_money(discount_price=coupon['市场价'],price=coupon['团购价'])
coupon.iloc[4,]


7.png


在这里面,作为客户的我,想知道商家让利多少元?那就是用“团购价”减去“市场价”,这时,指定第一个参数discount_price是“团购价”,第二个参数price是“市场价”,于是就实现了参数名称传递。

4
匿名函数

匿名,指的是不署名或不署真实姓名。Python中就有这样低调而神秘的函数,也称为lambda表达式。通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

比如,对于一个lambda表达式:lambda x,y: x-y。关键字lambda表示匿名函数,冒号前面的x,y表示函数参数,冒号后面则是函数体。它最终实现功能是求x-y的值。还用之前的计算每家火锅市场价与团购价的差额的。

例4

func=lambda x,y: x-y
func(coupon['市场价'],coupon['团购价']


8.png


这里用匿名函数代替了save_money函数的功能,x,y是形式参数,x-y是函数体内容。


模块


当一个函数简单的时候,写进一个文件就可以了。但是当越来越复杂时,将所有代码写进一个程序文件中就会出现文件过长或过大,不利于管理与维护。如果可以进行分类,放入不同的文件存放,就会显得非常整洁。那么不同类别的存放文件就是不同的模块。Python中,模块实际就是包含函数和其他语句的Python脚本文件,后缀为.py。模块可以被别的程序引入,以使用该模块中的函数等功能。

在Python中可以使用以下3种方法导入模块或者模块中的函数。

  • import    模块名

  • import    模块名as 新名字

  • from        模块名  import 函数名

这里面import是将整个模块导入,而from是将模块中的某个函数导入。使用import与from还有一个不同,就是使用import导出模块,模块中的函数使用时必须是模块名"."的形式。以pandas模块为例如下: 

例4

import pandas  #导入pandas模块
import pandas as pd#导入pandas模块,记为pd
from pandas import DataFrame#导入pandas模块中的DataFrame

例5

import math  #导入math模块
from math import sqrt#导入math模块的sqrt函数
import math as shuxue#导入math模块,记为shuxue,请原谅拼音不好的同学
print(math.sqrt(3)) #返回值 1.7320508075688772
print(sqrt(3)) #返回值 1.7320508075688772
print(shuxue.sqrt(3)) #返回值 1.7320508075688772

值得注意的是,模块可以简单看做是大量的函数构成的为了完成某一功能集合体。而本书作为数据科学实践的入门书籍,目的就是在阐述在数据科学实践的各个环节使用的Python数据科学实践模块。


注释:本文来自公众号狗熊会,版权归原作者所有。




上一篇:Python数据科学实践 | Pandas 1

下一篇:大数据培训入门:什么是Spark?为什么要学Spark?

相关推荐