用Python做数据科学时容易忘记的八个要点!
作者:网友投稿 时间:2018-07-30 16:02

如果你发觉自己在编程时一次又一次地查找相同的问题、概念或是语法,你不是一个人!
虽然我们在StackOverflow或其他网站上查找答案是很正常的事情,但这样做确实比较花时间,也让人怀疑你是否完全理解了这门编程语言。
我们现在生活的世界里,似乎有着无限的免费资源,而你只需要一次搜索即可获得。然而,这既是这个时代的幸事,也是一种诅咒。如果没能有效利用资源,而是对它们过度依赖,你就会养成不良的习惯,长期处于不利境地。

当我谷歌一个问题,发现有人提了同样问题,但下面只有一个回答,而且2003年以后就再也没有新的答案的时候,我真是和那个提问者同病相怜!弱小,可怜又无助!

“你是谁!你在哪儿!最后你发现了啥!”
就个人而言,我发现自己也是多次从类似的技术问答中找代码(见上文插图漫画);而不是花时间学习和巩固概念,以便下次可以自己把代码写出来。
网上搜索答案是一种懒惰的行为,虽然在短期内它可能是最简便的途径,但它终究不利于你的成长,并且会降低工作效率和对语法的熟知能力(咳咳,面试的时候这些知识很重要)。
目标
最近,我一直在Udemy学习名为Python for Data Science and Machine Learning的数据科学在线课程。在该系列课程的早期课件中,我想起了用Python做数据分析时一直被我忽略的一些概念和语法。
为了一劳永逸地巩固我对这些概念的理解,并为大家免去一些StackOverflow的搜索,我在文章中整理了自己在使用Python,NumPy和Pandas时总是忘记的东西。
我为每个要点提供了简短的描述和示例。为了给读者带来福利,我还添加了视频和其他资源的链接,以便大家更深入地了解各个概念。
单行List Comprehension
每次需要定义某种列表时都要写for循环是很乏味的,好在Python有一种内置的方法可以用一行代码解决这个问题。该语法可能有点难以理解,但是一旦熟悉了这种技巧,你就会经常使用它。

* Line 8是对for loop的单行简化
请参阅上图和下文的示例,比较一下在创建列表时,你通常使用的for循环样板和以单行代码创建这二者之间的差别。
x = [1,2,3,4]
out = []
for item in x:
out.append(item**2)
print(out)
[1, 4, 9, 16]
# vs.
x = [1,2,3,4]
out = [item**2 for item in x]
print(out)
[1, 4, 9, 16]
Lambda 函数
编程的过程中经常为了实现最后的功能,创建一个又一个阶段性的函数,这些函数往往就只用一两次。这个过程很烦人。这时候Lambda函数来搭救你了!
Lambda函数用于在Python中创建小型的,一次性的和匿名的函数对象。基本上,它们可以让你“在不创建新函数的情况下”创建一个函数。
lambda函数的基本语法如下:
lambda arguments: expression
所以,只要给它一个表达式,lambda函数可以执行所有常规函数可执行的操作。请看下面的简单示例和后文中的视频,以更好地感受lambda函数强大的功能。
double = lambda x: x * 2
print(double(5))
10
Map和Filter
一旦掌握了lambda函数,并学会将它们与map和filter函数配合使用,你将拥有一个强大的工具。



