ISEE小语
“相爱容易,因为五官,相处不易,因为三观,五官易合,三观难合。”
——网友
【引言】
本次介绍Python在数据分析中,使用匿名函数,目的是更加简化代码,让代码更加清晰。
在Python中,lambda函数是一种匿名函数,它可以在一行中定义简单的函数。在不想正式定义一个函数的情况下,使用lambda函数是一个比较好的选择。
【环境】
Python | 3.9.16 |
【实战使用】
在这里抽取了一个小实例:
在一次数据搜索中,我们需要从庞大的数据海洋中,找到与指定动物名称在60%以上相似度的那些“兄弟姐妹”数据。
首先:提前准备数据Animal_Dataset.csv
具体实现逻辑:
import pandas as pd
from 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函数将列表中的每个元素加1
numbers = [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”即可获取!
点个“赞”和“在看”,是对小栈最大的支持!
文章就分享到这儿,喜欢就点个赞吧!