Python数据分析之匿名函数实例使用

文摘   科技   2024-08-18 17:01   北京  

ISEE小语


“相爱容易,因为五官,相处不易,因为三观,五官易合,三观难合。”

——网友




【引言】

本次介绍Python在数据分析中,使用匿名函数,目的是更加简化代码,让代码更加清晰。

在Python中,lambda函数是一种匿名函数,它可以在一行中定义简单的函数。在不想正式定义一个函数的情况下,使用lambda函数是一个比较好的选择


【环境】

Python
3.9.16



【实战使用】

在这里抽取了一个小实例:

    在一次数据搜索中,我们需要从庞大的数据海洋中,找到与指定动物名称在60%以上相似度的那些“兄弟姐妹”数据。

首先:提前准备数据Animal_Dataset.csv

具体实现逻辑:

import pandas as pdfrom difflib import SequenceMatcher
# 读取CSV文件data = pd.read_csv('data/Animal_Dataset.csv')

# 定义一个函数来计算相似度def similarity(a, b): return SequenceMatcher(None, a, b).ratio()

while True: # 输入查询字符串 query = str(input("请输入需要搜索的动物名称(输入 'exit' 退出):"))
# 判断是否输入 'exit' 是则退出循环 if query.lower() == 'exit': print("退出搜索程序。") break else: # 处理查询逻辑,这里可以添加实际的搜索代码 print(f"正在搜索: {query}")
# 计算每个Animal名称与查询字符串的相似度 data['Similarity'] = data['Animal'].apply(lambda x: similarity(query, x))
# 过滤相似度大于60%的Animal数据 similar_animals = data[data['Similarity'] > 0.6]
# 输出动物名称和具体相似度 for index, row in similar_animals.iterrows(): print(f"{row['Animal']} 的相似度为: {row['Similarity']:.2f}")

(左右滑动查看完整代码)

结果:


我们可以很清晰看到,上面使用了自定义的独立函数:

# 定义一个函数来计算相似度def similarity(a, b):    return SequenceMatcher(None, a, b).ratio()


在调用的时候,使用匿名函数,显示的代码中也不觉得啰嗦:

# 计算每个Animal名称与查询字符串的相似度    data['Similarity'] = data['Animal'].apply(lambda x: similarity(query, x))


如果有需要了解一下lambda函数的,请继续往下看

如果需要Animal_Dataset.csv数据源练习的,请直接到底部


【基本语法】

接下来我们看一下lambda函数的基本语法:

lambda 参数1, 参数2, ... : 表达式


【基本使用】

我们来实现一个实例:两个数相加

自定义一个函数,通常是:

# 定义一个单独的函数def num_sum(x, y):    result = x + y    return result

# 调用num_sum = num_sum(7, 3)print(num_sum)
# 输出: 10

(左右滑动查看完整代码)

使用匿名函数,则是:

# 定义一个lambda函数,计算两个数的和num_sum = lambda x, y: x + y
# 调用lambda函数result = num_sum(7, 3)print(result)

# 输出: 10

(左右滑动查看完整代码)

这样是不是更加一目了然了

其实lambda函数在map、filter和sorted等函数中的日常应用,对于我们工作中非常有帮助。


【使用map函数】

map函数可以将一个函数应用于一个序列的所有元素。

# 使用lambda函数将列表中的每个元素加1numbers = [1, 2, 3, 4, 5]result = list(map(lambda x: x + 1, numbers))print(result)
# 输出: [2, 3, 4, 5, 6]

(左右滑动查看完整代码)


【使用filter函数】

filter函数可以根据一个函数的返回值来过滤序列中的元素。

# 使用lambda函数过滤出列表中的偶数numbers = [1, 2, 3, 4, 5, 6]result = list(filter(lambda x: x % 2 == 0, numbers))print(result)
# 输出: [2, 4, 6]

(左右滑动查看完整代码)

【使用sorted函数】

sorted函数可以根据一个函数返回的值对序列进行排序。

# 使用lambda函数按字典的值排序students = [    {'name': 'Alice', 'score': 85},    {'name': 'Bob', 'score': 92},    {'name': 'Charlie', 'score': 78}]
# 按分数从高到低排序sorted_students = sorted(students, key=lambda x: x['score'], reverse=True)print(sorted_students)

# 输出: [{'name': 'Bob', 'score': 92}, {'name': 'Alice', 'score': 85}, {'name': 'Charlie', 'score': 78}]

(左右滑动查看完整代码)


【总结】

    lambda函数在Python中是一个非常方便的工具,特别是在需要简单函数的地方。

    使用场景:

    1、作为参数传递给高阶函数:例如map、filter、sorted等。

    2、简化代码:在需要简单函数的地方,避免定义一个完整的函数。


小栈将数据和代码已经整理,有需要练习一下看效果的, 可以去下载!

  后台发送“animal”即可获取!



点个“”和“在看”,是对小栈最大的支持!

     

文章就分享到这儿,喜欢就点个吧!




推荐阅读  点击标题可跳转


ISEE小栈
没有花里胡哨,简单才是王道。
 最新文章