被少数人知晓的10个 Python 技能,一起学习一下吧

2020-12-25  本文已影响0人  孤城暮雨丶

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

本篇文章来自腾讯云 作者:深度学习与Python

为帮助你的数据科学工作,本文介绍了 十个被低估的 Python 技能。一旦掌握这些技能,我敢说,你将能够成为一个更“性感”的数据科学家。

10设置虚拟环境

虚拟环境为 Python 项目设置一个隔离的工作区。无论是你是单独工作还是与人合作,拥有一个虚拟环境都会有帮助,原因如下:

  1. 避免包冲突。
  2. 在安装包的位置提供清晰的视线。
  3. 确保项目使用的软件包版本的一致性。

虚拟环境的使用允许你(和你的团队成员)对不同的项目有着不同的依赖关系。在虚拟环境中,你可以测试安装软件包,而不必担心会污染系统安装。

部署 venv 模块 对于避免将来出现问题非常有帮助。因此在项目开始时不要跳过这一步骤。

了解更多:通过设置包含科学计算最常用包的虚拟环境,以节省空间,并且避免在不同地方安装多个包的相同版本。然后在特定项目的环境中以 .pth 文件的形式共享该公共环境。

9根据 PEP8 标准进行注释

撰写好注释,提高自信和协作能力。在 Python 中,这意味着遵循 PEP8 编码风格指南。

注释应该是声明性的,如下所示:

# Fix issue with utf-8 parsing

而不是如下所示:

# fixes issue

下面是一个 带有 docstring 的示例,它是一种特殊类型的注释,用于解释函数的用途:

def persuasion():
"""Attempt to get point across."""
print('Following this advice about writing proper Python comments will make you popular at parties')

docstring(文档字符串)特别有用,因为你的 IDE 会将这个字符串识别为与类关联的定义。在 Jupyter Notebook 中,你可以通过将光标放在函数末尾,并同时按下 Shift 和 Tab 键来查看函数的docstring。
8查找好的实用程序代码

你应该听说过“站在巨人的肩膀上”(standing on the shoulders of giants)这句话吧?Python 是一种资源极为丰富的编程语言。通过认识到自己不必孤军奋战,你可以加快数据科学的发现,从而完全可以并应该重用你之前的程序员的使用程序代码。

实用程序代码的一个很好的来源是 Chris Albon 的博客,该博主是 机器学习抽认卡 的创建者,这些抽认卡挂满了我家里的书房和卧室的墙上。他的网站提供了数百个代码片段的导航,可以加快你的 Python 工作流。

例如,Chris 向我们展示了如何按组将函数(比如 Pandas 的 rolling mean(移动窗口均值):.rolling())应用 到数据帧(DataFrame):

df.groupby('lifeguard_team')['lives_saved'].apply(lambda x:x.rolling(center=False,window=2).mean())

这段代码将输出一个数据帧,其中包含每两行的滚动均值,并在.groupby()语句中的第一部分为每个组重新启动。
7使用 pandas-profiling 进行自动探索性数据分析

使用 panda-profiling 工具包 可以自动执行大部分探索性数据分析(Exploratory Data Analysis,EDA)。探索性数据分析是任何数据科学项目的关键准备阶段。它通常涉及基本的统计分析,并观察特征之间的相互关系。

这篇文章《通过 pandas-profiling 进行更好探索性数据分析》(A better EDA with Pandas-profiling)阐述了一种标准的“手动”数据探索方法,并将其与 pandas-profiling 库创建的自动报告进行了比较。

探索性数据分析已死,pandas-profiling 万岁!用事半功倍的方法实现完美的数据概览!

6使用 qcut 改进目标分析

在这个关于改进机器学习工作流的精彩视频中,Rebecca Bilbro 提供了明智的建议,在进行特征分析之前应检查你的目标列。


在这里插入图片描述

以目标为出发点:这样你就可以在开始预测或分类目标变量之前,对目标标量有一个可靠的了解。采用这种方法,可以帮助你预先识别潜在的棘手问题(如 类不平衡)。

如果你处理的是连续变量,那么将值放入容器可能会有用。使用 5 个容器提供了利用帕雷托法则(pareto principle)的机会。要创建五分位数,只需使用 Panda 的q-cut函数即可。

amount_quintiles = pd.qcut(df.amount, q=5)

译注:帕雷托法则(pareto principle),也称为二八定律或 80/20 法则,此法则指在众多现象中,80% 的结果取决于 20% 的原因,而这一法则在很多方面被广泛地应用。这个法则最初是意大利经济学家 Vilfredo Pareto 在 1906 年对意大利 20% 的人口拥有 80% 的财产的观察而得出的。在计算机科学,帕雷托法则可以应用于优化工作。Microsoft 指出,通过修复报告最多的错误的前 20%,给定系统中 80% 的相关错误将被消除。Lowell Arthur 曾提过:“20% 的代码有 80% 的错误,只要找到它们并修复即可。”

每个容器将包含数据集的 20%。将目标变量的最高五分位数与最低五分位数进行比较,通常会得出有趣的结果。这项技术是一个很好的起点,可以用来确定目标变量最高(或最低)性能可能出现的异常情况。

如需进一步了解,也可以看看 Rebecca 在 《华盛顿的程序媛们》(《Women Who Code DC》,DC 指哥伦比亚特区,即美国首都华盛顿)职场访谈系列节目中的访谈,由《Yours Truly》节目组(译注:类似中国中央电视台的《大家》、《面对面》节目组)采访:


在这里插入图片描述

5为特征分析添加可视化

可视化并不仅仅用于商业智能仪表板。当你研究新的数据集时,加入一些有用的图表和图形,有助于提高分析的速度。


在这里插入图片描述

Seaborn 样例库

有许多可能的方法使用数据可视化来提高你的分析能力,下面罗列了一些资源可供探索:

数据科学家以擅长修补而闻名。但随着 该领域越来越接近于软件工程,对简洁、高性能的代码的需求也在日益增加。程序的性能应该根据时间、空间和磁盘使用情况进行评估,这些都是可扩展性能的关键。

Python提供了一些分析使用程序,可以用来展示你的代码花费时间的地方。为了支持对函数运行时的监视,Python 提供了 timeit 函数。

%%timeitfor i in range(100000):
i = i**3

在使用 Pandas 改进你的代码时,有一些捷径:

3简化时间序列分析

处理时间序列可能会令人生畏。我的训练营教练在准备讲授这个主题的那天,就带着一副不安的神情出现在课堂上。

幸运的是,dtw-python 包 提供了一种比较时间序列的直观方法。简而言之,动态时间规整(Dynamic Time Warping,DTW)计算不同长度的两个数组或时间序列之间的距离。


在这里插入图片描述 在这里插入图片描述

额外好处:知道何时不使用 Python

作为一名职业 Python 程序员,有时候,我怀疑自己是否过度依赖这个工具进行科学计算。Python 是一门令人愉快的编程语言。它简单明了,维护成本低,而且它的动态结构非常适合数据科学的探索性。

尽管如此,Python 绝对不是处理广泛定义的机器学习工作流各个方面的最佳工具。例如:

在由 TWIML AI 播客 主持的小组讨论中,专家们探讨了他们所选择编程语言的数据科学应用。


在这里插入图片描述

听到一个 JavaScript 开发人员 谈论使用这种典型的以 Web 开发为中心的语言进行机器学习的潜力,这有点奇怪。但是,嘿,这很有勇气,也很有创意不是吗?而且它有可能通过 打破机器学习和传统软件开发之间的障碍,实现数据科学的民主化。

目前,JavaScript 在数字上拥有优势:根据 2020 年 StackOverflow 开发人员调查(StackOverflow 2020 Developer Survey),68% 的开发人员使用 JavaScript,而使用 Python 的开发人员为 44%,只有 1% 的开发人员使用 Julia,但预计这种情况将迅速改变。更多的机器学习开发人员是否意味着更多的竞争,更多的见解,甚至更多的 arXiv 论文?这就更有理由提高你的 Python 技能了。

作者介绍:

Nicole Janeway Bills,数据科学家,有用商业和联邦咨询方面的经验,帮助组织利用他们的顶级资产:简单而健壮的数据策略。

上一篇下一篇

猜你喜欢

热点阅读