掌握Python、NumPy和Pandas中的小技巧
问题
不止你一个人在编程时发现自己一遍又一遍地查找相同的问题、概念或语法。作者自己也经常这样做。
虽然在StackOverflow或其他资源上查找并不是困难的事,但它确实会让你放慢脚步,并会让你对语言的理解产生疑问。
我们生活在一个看似具有无限的免费资源的世界里,你随时随地都能搜索到你想要的东西。然而,这可能是祝福,也可能是一种诅咒。如果不能进行有效管理,过度依赖这些资源可能会养成不良习惯,从而导致长期的恶果。
在这里还是要推荐下我自己建的群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴
就作者个人而言,他发现自己多次从类似的讨论主题中提取代码,而不是花时间去学习和巩固这个概念,以便可以在下一次自己重新编写代码。
这样做无疑会压制你的成长、创造力以及回忆语法的能力。
目标
最近,作者在Udemy上学习了名为Python for Data Science and Machine Learning的在线数据科学课程。在这期的讲座中,作者想起了一些在Python中执行数据分析时一直忽略的概念和语法。
为了巩固对这些概念的理解,并且为节省一些StackOverflow搜索,下面是作者在使用Python,NumPy和Pandas时总是忘记的东西。
作者为每个概念都写了一个简短的描述和示例,但为了方便读者,作者还展示包含视频和其他资源的链接,以便更深入地探索每个概念。
单行列表理解
每次需要定义某种列表时,编写一个for循环是很麻烦的,幸运的是,Python有一种内置的方法可以在一行代码中解决这个问题。语法可能有点难以理解,但一旦熟悉了这种技术,你会经常使用它。
请参阅上面和下面的示例,了解如何使用for循环创建列表。不过在这里我们没有使用循环。
Lambda函数
你是否已经厌倦了为有限的用例创建一个又一个的函数? Lambda函数来拯救你!Lambda函数用于在Python中创建小型、一次性和匿名函数对象。
lambda函数的基本语法是:
请注意,只要有一个表达式,lambda函数就可以完成常规函数可以执行的任何操作。
map()和filter函数
一旦掌握了lambda函数,接下来学习如何将它们与map()和filter函数配成为一个强大的工具。
具体来说,map()函数通过对每个元素执行某种操作来获取列表并将其转换为新列表。 在本例中,它遍历每个元素并将其本身的结果映射到新列表。 请注意,列表函数只是将输出内容转换为列表类型。
filter函数接受列表和规则,就像map()一样,但它通过比较每个元素和布尔过滤规则来返回原始列表的子集。
Arange和Linspace
创建快速而简单的Numpy数组只需查看arange和linspace函数。每个数组都有它的意义,但这里是它们输出的NumPy数组,因为这对于数据科学来说通常更容易处理。
Arange是返回给定时间间隔内的等间距值。除了起点和终点之外,你还可以根据需要定义间距或数据类型。请注意,停止点是一个"截止"值,因此它不会包含在数组输出中。
Linspace和Arange非常相似,但略有不同。 Linspace在给定的时间间隔内返回等间距值。所以给定一个起点和终点,以及一些值,linspace会将它们均匀地放在NumPy数组中。这对绘图时数据可视化和声明坐标轴特别有用。
轴到底意味着什么?
在Pandas中删除一列或在NumPy矩阵中求和值时,你可能会遇到此问题。现在我们以删除一列为示例:
正如你可能从上面推断出的那样,如果你想处理列,将轴设置为1,如果你想要处理行,将其设置为0。但为什么呢?这里面有很多原因,但至少得知道这一点:
从Pandas数据框中调用shape属性可以返回一个元组,第一个值代表行数,第二个值代表列数。如果你考虑如何在Python中对其进行索引,则行数为0,列数为1,这很像声明轴值的方式。
Concat、合并和加入
如果你熟悉SQL,那么这些概念对你来说可能会更容易。无论如何,这些函数本质上就是以特定方式组合数据框的方式。现在让我们回顾一下这些函数。
Concat允许用户在它下面或旁边追加一个或多个数据框(取决于你如何定义轴)。
合并将多个数据框组合在作为主键的特定公共列上。
加入,就像合并一样,结合了两个数据框。但是,它会根据它们的指数连接它们,而不是某个指定的列。
查看关于特定语法和更多具体示例的优秀文档,以及可能遇到的一些特殊情况。
Panda应用
可以把apply想象成一个map()函数,但它是为Panda数据框或更具体地为系列而设计的。如果你不是那么熟悉它,大多数情况下,它与NUMPY数组非常相似。
应用根据你指定的内容,向列或行中的每个元素发送一个函数。你可以想象在是多么有用,特别是对整个DataFrame列的值进行格式设置和操作,而不需要进行任何循环。
数据透视表
排在最后但并非最不重要的是数据透视表。如果你熟悉Microsoft Excel,那么你可能在某些方面听说过数据透视表。Pandas内置的数据透视表函数以DataFrame的形式创建电子表格样式的数据透视表。请注意,数据透视表中的级别存储在生成的DataFrame的索引和列上的MultiIndex对象中。
结束
作者希望文章中的一些概述已经有效的让你记住了在使用Python进行数据科学时经常遇到的重要方法、函数和概念。就作者个人而言,他认为即使是写出这些东西并试图用简单的方式解释它们的行为对他自身也很有帮助。
网友评论