加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

学习Python过程中,注重这8个小细节,让你在大数据领域事半功倍

发布时间:2018-09-20 16:13:30 所属栏目:大数据 来源:51CTO
导读:每个人都会遇到这个问题。 学习数据科学的过程,从来就不是一帆风顺的。在写代码的时候,你是否也经常不得不反复搜索同一个问题,同一个概念,甚至同一个语法结构的特性呢?对,你不是一个人在战斗。 我也一直在同样的情况里挣扎着。 虽然遇到问题上 Stack
副标题[/!--empirenews.page--]

每个人都会遇到这个问题。

学习数据科学的过程,从来就不是一帆风顺的。在写代码的时候,你是否也经常不得不反复搜索同一个问题,同一个概念,甚至同一个语法结构的特性呢?对,你不是一个人在战斗。

我也一直在同样的情况里挣扎着。

虽然遇到问题上 StackOverflow 搜一搜是相当正常的,但比起切实掌握理解语言特性的情况,不断重复的遇到问题+搜来搜去,会严重拖慢你的速度。

如今,无穷无尽的免费资源时时刻刻充斥着互联网,一搜即得。然而,对初学者,这既是一种祝福,也是一个诅咒。如果不经过有效管理,过度依赖网络资源会让你养成糟糕的习惯,从长远上影响了你的成长。

拿我自己来说,我常常从许多内容差不多的帖子里复制代码下来使用,而不愿意花时间和精力去学习巩固其中所需的技术概念,以便下次能自己写出需要的代码。

这是个懒办法,虽然短期内看起来它能简单快速地搞定问题,但从长远上看,这个做法会严重影响你的成长,破坏你的创造性,并从根本上动摇你回想某些语法特性的能力(这在技术面试的时候可是致命的)。

那我要怎么解决呢?

为了进一步巩固我自己对这些概念的理解,也为了帮大家节省一下每次上网搜索的时间,我在这里整理了一下自己使用 Python、NumPy 和 Pandas 时遇到的一些常见的小问题,希望对你有帮助。

01、 只要一行代码的列表生成器

假如每次你想要生成个列表,都要写个循环,是不是很烦呢?好在 Python 已经有一个内建方法,只要一行代码就能搞定这个问题。如果你不熟悉这个语法,可能理解起来会有点难度,不过一旦你习惯这个技术之后,你一定会爱不释手的!

2ENZrmn

动图:如何将一个循环改成列表生成式(来源:Trey Hunner )

上面这个动图就是一个很好的例子,原来的代码就是采用 for 循环生成列表的方法,而图上一步一步将它改造成了一个只有一行代码的列表生成式,再也不用循环啦。是不是很简洁?

下面是另外一个对比范例:

使用循环:

2

输出的结果是 [1, 4, 9, 16]

使用生成式:

3

输出的结果也是 [1, 4, 9, 16]

02、 Lambda 表达式

明明这个函数用不了几次,每次都要写一大串函数构建代码,是不是很累?别怕,Lambda 表达式来救你!Lambda 表达式能方便地创造简单、一次使用而且匿名的函数对象。基本上,它们让你无需费心构造一个函数,而是直接使用这个函数。

Lambda 表达式的基本语法是:

qaEraiJ

要记住,Lambda 表达式创造的函数和普通的 def 构建的函数没什么不同,只不过函数体只有单独一个表达式而已。看看下面这个例子:

4

输出的结果是 10

03、 Map 和 Filter 函数

一旦你掌握了 Lambda 表达式,将它们与 map 或 filter 函数一起使用,可谓是威力无比。

具体来说, map() 函数接收一个列表,和一个函数,它对列表里的每个元素调用一个函数进行处理,再将结果放进一个新列表里。下面这个例子中,map() 函数遍历 seq 中的每个元素,把它乘2,再把结果放入一个新列表,最后返回这个列表。最外面一层 list() 函数是把 map() 返回的对象转换成列表格式。

5

输出的结果是 [2, 4, 6, 8, 10]

而 filter() 函数略有不同,它接收一个列表,和一个规则函数,在对列表里的每个元素调用这个规则函数之后,它把所有返回值为假的元素从列表中剔除,然后返回这个过滤后的子列表。

6

输出的结果是 [3, 4, 5]

04、 Arange 和 Linspace 函数

为了快速方便地生成 numpy 的数组,你一定得熟悉 arange() 和 linspace() 这两个函数。这两个函数分别有自己的特定用法,不过对我们来说,它们都能很好地生成 numpy 数组(而不是用 range() ),这在数据科学的分析工作上可是相当好用的。

arange() 函数按照指定的步长返回一个等差数列。除开始和结束值之外,你还可以自定义步长和数据类型。请注意,给定的结束值参数是不会被包含在结果内的。

7

输出的是一个数组对象: array([3, 5])

linspace() 函数的用法也很类似,不过有一点小小的不同。 linspace() 返回的是将给定区间进行若干等分以后的等分点组成的数列。所以你传入的参数包括开始值、结束值,以及具体多少等分。linspace() 将这个区间进行等分后,把开始值、结束值和每个等分点都放进一个 NumPy 数组里。这在做数据可视化以及绘制坐标轴的时候都很有用。

8

输出的是一个数组对象: array([ 2.0, 2.25, 2.5, 2.75, 3.0])

05、 Pandas 中坐标轴(axis 参数)的意义

在 Pandas 里要筛掉某一列,或是在 NumPy 矩阵里要对数据求和的时候,你可能已经遇到过这个 axis 参数的问题。如果你还没见过,那提前了解一下也无妨。比如,对某个 Pandas 表这样处理:

9

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读