• 利用Python进行数据分析——函数部分


    1 基础知识

    1. 函数使用 def 关键字声明,用 return 关键字返回值。
    def my_function(x, y, z=1.5):
        if z > 1:
            return z * (x + y)
        else:
            return z / (x + y)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 可以同时拥有多条return语句,如果达到函数末尾时没有遇到return,则返回None。(和c语言是不一样的)

    2. 函数可以有一些位置参数(不指定默认值)和关键字参数(指定默认值)。
      但是,关键字参数必须位于位置参数(如果有的话)之后。

    my_function(5, 6, z=0.7)
    my_function(3.14, 7, 3.5)
    my_function(10, 20)
    
    my_function(x=5, y=6, z=7)
    my_function(y=6, x=5, z=7)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.1 命名空间

    函数可以访问两种不同作用域中的变量:全局(global)和局部(local)。

    Python有一种更科学的,用于描述变量作用域的名称,即命名空间(namespace)。

    任何在函数中赋值的变量,默认都是被分配到局部命名空间的。
    局部命名空间是在函数被调用时创建的,函数参数会立即填入该命名空间。

    • 可以使用global关键字把函数中的参数声明为全局变量。
    • 但是不建议频繁使用global关键字,因为全局变量一般是用于存放系统的某些状态的。

    1.2 返回多个值

    • 这个功能是比Java、C++ 方便太多了。需要注意的就是,在调用函数时,要返回值要和接收值一一对应。
    python
    def f():
        a = 5
        b = 6
        c = 7
        return a, b, c
    a, b, c = f()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 在实际应用中,更多的用法是,函数只返回一个对象,也就是一个元组。然后再将该元组拆分到各个结果变量中。
    def f():
        a = 5
        b = 6
        c = 7
        return {'a' : a, 'b' : b, 'c' : c}
    
    return_value = f()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.3 函数也是对象

    • 对一个复杂的字符串,对其进行数据清洗工作。
    • 需要用到内建的字符串方法和正则表达式——re模块。
    In [171]: states = ['   Alabama ', 'Georgia!', 'Georgia', 'georgia', 'FlOrIda', 'south   carolina##', 'West virginia?']
       
    import re
    def clean_strings(strings):
        result = []
        for value in strings:
            value = value.strip()
            value = re.sub('[!#?]', '', value)
            value = value.title()
            result.append(value)
        return result
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (1)strip()方法

    strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
    返回值:修改之后的字符序列。

    注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。


    (2)sub()方法
    sub()方法用来进行查询和替换,sub()方法的格式为:
    re.sub(pattern, repl, string, count=0, flags=0)

    pattern:表示正则中的模式字符串;
    repl:表示要替换的字符串(即匹配到pattern后替换为repl),也可以是个函数;
    string:表示要被处理(查找替换)的原始字符串;
    count:可选参数,表示要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会替换;
    flags:可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0
    • 1
    • 2
    • 3
    • 4
    • 5

    (3)title()方法

    title()方法的功能:将字符串中所有单词的首个字母转化为大写,其他字母均转化为小写。

    【特别注意】若在字符串中遇到标点符号、空格、数字等其他非字母元素,则非字母元素后的第一个字母转化为大写,其他字母转化为小写。

    在这里插入图片描述

    2 一些重要函数

    2.1 map() 函数

    map 是 python 的内置函数,会根据提供的函数对指定的序列做映射。

    map() 函数的格式是:

    map(function, iterable,...)
    
    • 1

    第一个参数接受一个函数名。后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
    把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意:map函数不改变原list,而是返回一个新list。

    • 举个例子:
    del square(x):
        return x ** 2
     
    map(square,[1,2,3,4,5])
     
    # 结果如下:
    [1,4,9,16,25]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组中:
    map(None,[2,4,6],[3,2,1])
     
    # 结果如下
    [(2,3),(4,2),(6,1)]
    
    • 1
    • 2
    • 3
    • 4

    2.2 匿名函数(lambda)

    Python支持一种匿名函数,这种函数仅由单条语句组成,该语句的结果就是返回值。

    通过lambda关键字定义,代表“正在声明的是一个匿名函数”。

    def short_function(x):
        return x * 2
        
    equiv_anon = lambda x: x * 2
    
    • 1
    • 2
    • 3
    • 4
    • 举一个简单的例子:
    def apply_to_list(some_list, f):
        return [f(x) for x in some_list]
    ints = [4, 0, 1, 5, 6]
    apply_to_list(ints, lambda x: x * 2)
    
    • 1
    • 2
    • 3
    • 4

    相当于:[x *2 for x in ints]

    • 再举一个例子:
    def func(x,y):
    	return x+y
    	
    # 相当于下面的lambda
    lambda x,y: x+y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 假设有一组字符串,你想要根据各字符串不同字母的数量对其进行排序:
    In [177]: strings = ['foo', 'card', 'bar', 'aaaa', 'abab']
    
    In [178]: strings.sort(key=lambda x: len(set(list(x))))
    In [179]: strings
    Out[179]: ['aaaa', 'foo', 'abab', 'bar', 'card']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 list() 函数

    1. 列表 list() 方法用于将可迭代对象(字符串、列表、元祖、字典)转换为列表
    T = (123, 'Google', 'Runoob', 'Taobao')
    L1 = list(T)
    print ("列表元素 : ", L1)
     
    S="Hello World"
    L2=list(S)
    print ("列表元素 : ", L2)
    
    
    ###############################################
    列表元素 :  [123, 'Google', 'Runoob', 'Taobao']
    列表元素 :  ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.4 set() 函数

    set() 函数创建一个无序不重复元素的集合。

    可进行关系测试,删除重复数据,还可以计算交集、差集、并集等,返回新的集合对象

    2.5 sort() 方法

    sort(*, key=None, reverse=False)
    
    • 1
    1. 排序是就地的、稳定的。是修改的列表本身,并且是能够保持两个相等语速的位置的。
    2. key 函数的使用:将其应用于每个列表项,并根据他们的函数值对列表进行升序或者降序排序。
    3. reverse 设置反向标志,设置为升序和降序排序。
  • 相关阅读:
    AOP-简介,面向切面编程好处,AOP编程术语,AspectJ(通知类型,切入点表达式)
    这波操作看麻了!十亿行数据,从71s到1.7s的优化之路。
    【计算机毕业设计】java ssm网上宠物商店系统
    C++学习笔记(二)
    为什么MySQL默认的隔离级别是RR而大厂使用的是RC?
    Go:字符串Combinations组合算法(附完整源码)
    进行LDPC编码时扔掉了前面2Zc的信息位,为何如此设计?在解码时如何恢复?
    接口测试及接口抓包常用的测试工具
    祥云杯crypto-wp
    ssm+vue+elementUI 基于微信小程序的游戏美术外包管理信息系统-#毕业设计
  • 原文地址:https://blog.csdn.net/weixin_42521185/article/details/125379814