不能错过!你必须知道的3种重要Python技能

640?wx_fmt=jpeg

全文共1928字,预计学习时长5分钟

640?wx_fmt=png
图片来自fabio,Unsplash

学习 Pandas 是很棒的体验,学习 Numpy 也很有趣。 但是,你是否过早地开始使用程序库了呢? 这也许是因为你还没有意识到pure python的魅力。
 
如果是这样的话,那么这篇文章会对你很有帮助。
 
本文将介绍几个非常有趣的pure python功能,这些功能是在日常数据科学工作中十分常用的。 在整个数据准备阶段都都可以大量地使用它们(大量用于数据清理),甚至在绘制之前也可以使用它们来聚合数据。
 
希望你也可以将这些技巧运用到项目中。 尽管没有运行时的速度或性能优势,但是与从零开始实施此逻辑相比,这将为你节省大量时间。 因此,言归正传,让我们来看第一点吧!
 
640?wx_fmt=gif
By GIPHY

1、拉姆达函数(Lambda Functions)
 
拉姆达函数非常强大。 当然,当必须以相同的方式清理多个列时,我们不会使用它,但这并不是经常遇到的情况。 通常情况下,每个属性在清理后都需要自己的逻辑。
 
Lambda函数允许创建“匿名”函数。 这基本上意味着可以快速生成特定函数,而无需使用pythonsdef来正确定义函数。
 
尽管如此,请记住Lambda函数主要被设计成one-liners,因此它应该用于简单的东西。 对于更复杂的逻辑,则需要使用常规函数。
 
里将展示两个具体示例,通过这些示例,我们无需为所有项目定义函数,从而可以节省许少时间。 虽然第一个示例可能不会在现实中常用,但值得一提。 这就是对数字求平方。
 
#regular function	
def square_number(x):	
    res = x ** 2	
    return res# lambda function	
square = lambda x: x ** 2# results	
print('square_number(4): {}'.format(square_number(4)))	
print('square lambda: {}'.format(square(4)))>>> square_number(4):16	
>>> square lambda: 16

上面的代码片段以常规方式和lambda函数的方式完成了相同逻辑的实现。 虽然结果是一样的,但是lambda的单行看起来舒服多了!
 
第二个例子是关于检查数字是偶数或非偶数:
 
#regular function	
def is_even(x):	
    if x % 2 == 0:	
        return True	
    else:	
        return False	
 	
 	
# lambda function	
even = lambda x: x % 2 == 0# results	
print('is_even(4): {}'.format(is_even(4)))	
print('is_even(3): {}'.format(is_even(3)))	
print('even(4): {}'.format(even(4)))	
print('even(3): {}'.format(even(3)))>>> is_even(4): True	
>>> is_even(3): False	
>>> even(4): True	
>>> even(3): False

再一次,同样的逻辑以两种方式实现。 你来决定你喜欢哪一个吧。
 
2、列表解析(List Comprehensions)
 
简单来说,列表解析使我们可以使用其他符号创建列表。 可以将其视为括号内的单行循环。
 
在做特征工程时,使用列表解析很方便。 例如,假设我们在通过分析电子邮件标题来进行垃圾邮件检测,那么我们会想弄明白是否问号会在垃圾邮件中经常出现。 如果用列表解析来实现的话,这将是一项非常简单的任务。
 
就不再进行更多的理论解释了。 例子才是最重要的。
 
这里的例子选择声明一个常规函数,该函数将检查列表中以某个字符(在这种情况下为“ a”)开头的项目。 实施后,再用列表解析执行相同的操作。 猜猜哪个会写起来更快呢?
 
lst =['Acer', 'Asus', 'Lenovo', 'HP']# regular function	
def starts_with_a(lst):	
    valids = []	
 	
    for word in lst:	
        if word[0].lower() == 'a':	
            valids.append(word)	
 	
    return valids	
 	
 	
# list comprehension	
lst_comp = [word for word in lst if word[0].lower() == 'a']# results	
print('starts_with_a: {}'.format(starts_with_a(lst)))	
print('list_comprehension: {}'.format(lst_comp))>>> starts_with_a:['Acer', 'Asus']	
>>> list_comprehension: ['Acer', 'Asus']

如果是第一次看到这样的方式,语法可能会有点混乱。 但是当你每天都在写这样的函数时,它们会越来越吸引你,看你能把多少复杂的东西应用进去。
 
3、Zip函数
 
这是在实践中很少看到的内置python方法之一。 从数据科学家的角度来看,它使我们能够同时迭代两个或多个列表。 在处理日期和时间时,这可以派上用场。
 
例如,有一个属性表示某个事件的开始时间,而第二个属性表示该事件的结束时间时,为了进一步分析,几乎总是需要计算它们之间的时间差。 而到目前为止,zip函数是最简单的方法。
 
例如,来比较一些虚构公司和虚构地区的一周销售日期:
 
sales_north= [350, 287, 550, 891, 241, 653, 882]	
sales_south = [551, 254, 901, 776, 105, 502, 976]for s1, s2 in zip(sales_north,sales_south):	
    print(s1 — s2)>>> -201	
    33	
    -351	
    115	
    136	
    151	
    -94

看看这有多么简单吧。 可以应用相同的逻辑同时迭代3个数组,只需要在括号中添加“ s3”和其他一些列表名称即可。
 
结语
 
Pure Python真的非常强大。 了解其功能后,就不再需要专门的库来存放所有内容了。 这将帮助你成为一名更好的程序员。
 
练习这些技能、掌握它们,并将其应用到日常工作中。 无论是仅仅为了娱乐、完成学业还是工作,你都不会后悔的。
 
你的看法是什么? 你是否认为Pure Python中的其他内容也对于数据科学家至关重要? 说说你的观点吧!
 
640?wx_fmt=png
推荐阅读专题


640?wx_fmt=jpeg
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货

编译组:沈田、殷睿宣
相关链接:
https://towardsdatascience.com/3-essential-python-skills-for-data-scientists-b642a1397ae3

如需转载,请后台留言,遵守转载规范

推荐文章阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值