Python程序员应当知道的五大理念

大数据观察

了解大数据,关注大数据观察吧!

如果你在编程的时候发现自己一遍又一遍的搜索同一个问题、概念或者语法,那么你并不孤单。

我自己也经常这样。

虽然在 StackOverflow 和其他资源网站搜索很正常,但是它对你的好处比较小,并且会增加你理解这门语言的困难。

我们生活在看起来有无限信息和无穷免费资源的时代,似乎搜索一下就把问题解决了。然而,这可能既是祝福也是诅咒。如果不能有效的管理和整合,过度依赖这些资源会阻挡我们长期进步。

来源:xkcd

我发现自己有几次从论坛上复制代码并修改,而不是花时间去学习和巩固我下次可能遇见的知识点。

这个方法比较懒。虽然这个方法可能是短期阻力比较小的一个,但是这最终会伤害你的成长、效率和回想语法的能力。

目标

最近我在 Udemy 通过了一个名为「数据科学和机器学习中的 Python」的在线课程。通过这一系列的课程,我整理了一些我在 Python 数据分析中所忽视的语法和概念。

为了巩固我对这些理念的理解和便于你们在 StackOverFlow 进行搜索,这里我整理出了我在使用 Python,Numpy,Pandas 中的一些知识点。

对于每一个知识点我都给出了简短的描述和例子。另外,我也给出了视频和其他的资料的链接,这些有助于加深这些知识点的理解。

列表推导式

在写循环的时候,每次定义一堆的列表是相当无聊的。幸运的是,Python 内置了一种名为列表推导式的方法,这种方法仅仅使用一行代码就可以解决这个问题。列表推导式刚开始对你来说可能有些困难,但是你一旦熟悉,你就会经常使用。

来源: Trey Hunner

下面的第一个例子是求每一个元素平方的的普通写法,第二个是列表推导式的写法。

Lambda 函数

有些函数只需要用几次就需要定义一个新函数,你是否对此厌烦呢?lambda 函数可以解决这个问题!Lambda 函数在 Python 中通常被用来构建应用次数比较少的的匿名函数。也就是让你构建一个了不带名字的函数。

Lambda 函数的基本语法如下:

lambda arguments: expression

普通函数能做的,Lambda 函数也都能做,只要它们能够写成一行。下面这个简单的例子和视频能够更好的让你理解 Lambda 函数的强大之处。

Map 函数与 Filter 函数

当你掌握了 Lambda 函数,然后将 Lambda 函数和 map,filter 函数一起使用,你会发现威力巨大。 具体的说,map 函数通过对列表中的每一个元素进行操作,将列表转换成一个新的列表。在下面的这个例子中,map 函数将每一个元素乘以 2,变成一个新的元素。注意这里的 list 函数只是简单的将输出结果转化为 list 类型。

Filter 函数类似于 map 函数,但是 filter 函数通过比较每一个元素是否为真从原始列表中抽取子集。

Arange 函数 和 Linspace 函数

快速创建简单的 NumPy 数组,使用 arange 和 linspace 函数最合适不过了。 它们都有各自特定的功能,但在这里使用(不是使用范围)在于其产生的 NumPy 数组,对于数据科学通常更容易操作。

Arange 函数,根据 start 和 stop 指定的范围以及 step 设定的步长,生成指定间隔的均匀间隔序列。除了开始值 start 和结束值 stop,还可以根据需要定义步长 step 或数据类型。这里需要注意,结束值是一个「截止」值,所以不会包含在生成的数组中。

Linspace 函数非常相似,但略有不同。它根据 start 和 stop 指定的范围以及 num 设定的个数,生成指定个数的均匀间隔序列。因此,给定一个开始值 start 和结束值 stop,以及个数值 num,linspace 函数将在 NumPy 数组中均分这个范围。这在数据可视化和绘图时轴的声明很有用。

什么是轴 Axis

使用 Pandas 删除列或对 NumPy 矩阵元素求和时,你可能会遇到这个问题。如果没有,那么之后也一定会遇到。下面给出删除列的示例:

在我真正知道为什么需要声明轴是什么之前,我编写了无数次这行代码。从上面的代码中,你可以推断出,如果对列进行操作需要将 axis 设置为 1,对行操作则将其设置为 0。但这是为什么呢?我喜欢探求原因,或者至少我记得这个:

查看 Pandas 中 dataframe 的 shape 属性会返回一个元组,其中第一个值表示行数,第二个值表示列数。想想 Python 中的索引方法——行为 0 列为 1,这与我们声明轴的方法非常相似。很有意思,对吧?

文章与部分图片来源于网络,如有疑问,请联系删除

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723B131TB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券