<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <blockquote>
讯享网
原文:DataQuest Blog
协议:CC BY-NC-SA 4.0
原文:https://www.dataquest.io/blog/documenting-in-python-with-docstrings/
August 15, 2022
讯享网
Python 的禅告诉我们“可读性很重要”,“显式比隐式好。”这些都是 Python 的必要特征。当我们写代码时,我们是为了最终用户、开发者和我们自己。
请记住,当我们阅读 文档或 文档时,我们也是最终用户。这两个软件包都有很好的文档,用户使用它们通常不会有任何问题,因为它们包含了大量的示例和教程。它们还有内置文档,我们可以在您的首选 IDE 中直接访问。
现在想象一下在没有任何参考的情况下使用这些包。我们需要深入研究他们的代码,以了解它做什么,以及我们如何使用它。有一些软件包完全没有文档,通常要花更多的时间来理解它们下面是什么以及我们如何使用它们。如果包很大,函数分布在多个文件中,那么工作量会增加一倍或两倍。
为什么好的文档很重要现在应该更明显了。
接下来,其他开发人员可能想要为我们的项目做出贡献。如果我们的代码有良好的文档记录,他们可以做得更快更有效。如果你不得不花几个小时弄清楚一个项目的不同部分是做什么的,你会愿意在空闲时间为这个项目做贡献吗?我不会。
最后,即使只是我们的私人项目或一个小脚本,我们无论如何都需要文档。我们永远不知道什么时候我们会回到我们的老项目中去修改或改进它。如果它明确地告诉我们它的用途以及它的功能、代码行和模块是做什么的,那么使用它会非常愉快和容易。在编写代码时,我们往往会很快忘记我们在想什么,所以花一些时间解释我们为什么要做一些事情,在返回代码时总是会节省更多的时间(即使它是一天前才编写的)。所以,花些时间在文档上,它会在以后回报你。
让我们来看一些 Python 中文档字符串的例子!例如,下面的普通函数采用两个变量,或者返回它们的和(默认情况下),或者返回它们之间的差:
讯享网
这个函数非常简单,但是为了展示 Python docstrings 的强大功能,让我们编写一些文档:
讯享网
这个函数的 Python docstring 用两边的三个双引号括起来。正如您所看到的,这个字符串解释了这个函数的作用,并指出我们可以如何改变它的功能,以及如果它不支持我们希望它执行的操作会发生什么。这是一个简单的例子,您可能会认为这个函数太明显了,不需要任何解释,但是一旦函数变得复杂并且数量增加,您至少需要一些文档来避免迷失在自己的代码中。
引擎盖下发生了什么?如果我们在函数上运行函数,就会弹出 docstring。所有文档完整的包都有(几乎)所有函数的 docstrings。例如,让我们看看熊猫的数据帧:
讯享网
现在,如果我们看一下 源代码,就会发现向我们展示了类的 docstring(搜索)。
从技术上讲,docstring 被分配给这个对象的一个自动生成的属性,称为。我们还可以打印出该属性,并看到它与之前完全相同:
讯享网
在我们了解了 docstrings 的样子之后,是时候了解它们与常规代码注释的区别了。主要思想是它们(通常)服务于不同的目的。
文档字符串解释了一个函数/类的用途(例如,它的描述、参数和输出——以及任何其他有用的信息),而注释解释了特定代码字符串的作用。换句话说,代码注释是给想要修改代码的人用的,文档字符串是给想要使用代码的人用的。
此外,在计划代码时,代码注释可能是有用的(例如,通过实现伪代码,或者留下你的想法或想法的临时注释,这些想法或想法不是为最终用户准备的)。
让我们看看不同类型的文档字符串。首先,浏览 Python 的 PEP 页面是一个极好的主意。我们可以找到 PEP 257 ,里面总结了 Python docstrings。我强烈建议你通读,即使你可能并不完全理解。要点如下:
- 使用三个双引号将文档字符串括起来。
- Docstring 以点结束。
- 它应该描述函数的命令(即函数做什么,所以我们通常以“Return…”开始短语)。
- 如果我们需要添加更多的信息(例如,关于参数),那么我们应该在函数/类的概要和更详细的描述之间留一个空行(关于它的更多信息将在本教程后面给出)。
- 如果能增加可读性,多行文档字符串也不错。
- 应该有参数、输出、异常等的描述。
请注意,这些只是建议,并不是严格的规则。例如,我怀疑我们是否需要向函数添加更多关于参数或输出的信息,因为摘要已经足够描述了。
有四种主要类型的文档字符串,它们都遵循上述建议:
- NumPy/SciPy docstrings
- 谷歌文档字符串
- 重组文本
- Epytext
你可以看看所有的,然后决定你最喜欢哪一个。尽管 reStructuredText 是官方的 Python 文档样式,但 NumPy/SciPy 和 Google docstrings 会更频繁地出现。
让我们来看一个真实世界的数据集,并编写一个函数来应用于它的一个列。
这个数据集包含了 1995-2021 年 Metacritic 上的顶级视频游戏。
讯享网
例如,我们可能对创建一个列感兴趣,该列计算一个游戏在多少天前发布。为此,我们还将使用包(教程一、教程二)。
首先,让我们编写这个函数并测试它:
讯享网
该函数如预期的那样工作,但是最好用 docstrings 来补充它。首先,让我们使用 SciPy/NumPy 格式:
在上面的部分,我没有重复(大部分)已经在总结部分的内容。
接下来,一个 Google docstrings 的例子:
讯享网
一个重组文本的例子:
最后,一个 Epytext 的例子:
讯享网
大多数函数文档字符串至少应该有它们的功能、输入和输出描述的摘要。此外,如果它们更复杂,它们可能包括例子、注释、例外等等。
最后,我没有过多地讨论类,因为它们在数据科学中并不常见,但是除了它们的方法(函数)所包含的内容之外,它们还应该包含以下内容:
- 属性描述
- 方法列表及其功能摘要
- 属性的默认值
Python docstrings 还描述了小脚本的功能和使用指南,这些小脚本可能适用于我们一些日常任务的自动化。例如,我经常需要将丹麦克朗转换成欧元。我可以每次在谷歌上输入一个查询,或者我可以下载一个应用程序来帮我完成,但这一切似乎都过于复杂和多余。我知道一欧元大约是 7.45 丹麦克朗,因为我几乎总是在 Linux 终端上工作,所以我决定编写一个小的 CLI 程序,将一种货币转换成另一种货币:
该脚本应该有足够的文档记录,以允许用户应用它。在文件的顶部,docstring 应该描述脚本的主要目的、简要指南以及它包含的函数或类。此外,如果使用任何第三方包,应该在 docstrings 中声明,以便用户在使用脚本之前安装它。
如果您使用模块创建 CLI 应用程序,那么它的每个参数都应该在菜单中描述,以便最终用户可以选择选项并确定输入。此外,参数应该填入对象中。
最后,如前所述,所有功能都应正确记录。这里,我省略了“参数”和“返回”描述符,因为从我的角度来看,它们是不必要的。
另外,请注意我是如何使用代码注释的,以及它们与 docstrings 有何不同。如果你有一个自己写的脚本,添加一些文档来练习。
为什么文档很重要,为什么文档字符串是 Python 文档的重要组成部分,这应该很清楚了。最后,让我给你一些关于 Python 文档字符串和文档的一般性建议。
- 为人们而不是计算机写文档。它应该是描述性的,但简洁明了。
- 不要过度使用 docstrings。有时它们是不必要的,一个小的代码注释就足够了(甚至根本没有注释)。假设开发人员有一些 Python 的基础知识。
- 文档字符串不应该解释函数如何工作,而是应该解释如何使用它。有时,可能有必要解释一段代码的内部机制,因此使用代码注释。
- 不要用文档字符串代替注释,也不要用注释代替代码。
以下是我们在本教程中学到的内容:
- 文档是 Python 项目的重要组成部分——它对最终用户、开发人员和您都很重要。
- 文档字符串是给使用代码的的,注释是给修改代码的的。
- PEP 257 总结 Python 文档字符串。
- 有四种主要的 docstring 格式:NumPy/SciPy docstring、Google docstring、 reStructuredText 和 Epytext 。前两种是最常见的。
- 脚本文档字符串应该描述脚本的功能、用法以及其中包含的功能。
我希望你今天学到了一些新东西。请随时在 LinkedIn 或 T2 GitHub 上与我联系。编码快乐!
原文:https://www.dataquest.io/blog/does-sharing-goals-help-or-hurt-your-chances-of-success/
October 22, 2018
所以你决定要学习数据科学。你应该在社交媒体上分享你的目标,还是和一个负责任的伙伴分享?还是应该默默工作,直到你学到足够多的知识,可以称自己为数据科学家?
心理学研究表明,分享你的目标可能会对你真正实现目标的机会产生影响。但是要注意:这里没有简单的“分享/不分享”的答案。事实证明,分享的心理要比这复杂得多。
(警告:由于我们在谈论科学研究,本文中的几乎每个链接都是 PDF 链接)。
传统智慧认为分享是个好主意,因为有人让你负责能帮助你实现目标。研究表明这是真的,但只是在特定条件下。对各种目标跟踪和分享研究的元分析表明问责制的影响会有很大的不同,这取决于谁让你负责,以及我们所说的哪种问责制。
至于谁是谁,你的责任伙伴应该是一个朋友。像这样的研究表明,当你的进步被一个陌生人监控时,它实际上可能是德激励。此外,与朋友分享可能与更高的成功率相关。盖尔·马修斯博士最近开展的这项研究发现,告诉朋友自己对某个目标的承诺的受试者比没有告诉朋友的受试者更有可能实现这个目标。
也不应该是普通朋友。像这样的研究表明,从给予你过程赞扬(基于你的努力和你实际所做的赞扬)的人那里得到反馈,会比向给予你个人赞扬(基于你天生的能力或身份的赞扬)的人报告给你带来更好的结果。
换句话说,你想要一个会说“哇,你真的很努力!”而不是“哇,你真聪明!”事实上,拥有一个给你人称赞的人(“你真聪明!”)可能比完全得不到反馈更糟糕。如果你一直被告知你的成功是由于天生的天赋,当你遇到挑战和失败时,你更有可能把它视为你的先天不足,而不是可以通过更多努力或更好的策略来克服的东西。
你也想找到一个愿意根据你的需求来提供反馈的朋友,因为随着你学习的进展,你的需求可能会改变。研究人员发现,在学习新事物的早期,最好能得到积极的反馈。但是你越有经验,你对负面反馈的回应就越多。
原因是,通常在一个新项目或学习课程的早期阶段,我们的自我评估将集中在我们的承诺程度上。积极的反馈有助于我们肯定和巩固这种承诺。但是随着我们越来越深入,我们倾向于评估实际的进展。在这一点上,获得负面反馈往往会带来更好的结果,因为它会推动我们继续努力。在那个阶段,积极的反馈会让我们把脚从油门上移开。
总之:如果某人是你的朋友,与他人分享可能会有所帮助,如果那个朋友小心翼翼地给你过程上的赞扬,而不是赞扬你的内在品质,并愿意随着你学习的进展从注重积极反馈转向更多的消极反馈,可能会特别有帮助。

所以你已经找到了合适的朋友来做你的责任伙伴。现在,你实际上告诉他们什么?这也很重要。在上面提到的马修斯研究中,与朋友分享目标的受试者比那些不分享的受试者更有可能成功,但是定期给朋友写进度报告的受试者甚至更有可能实现他们的目标。
这可能反映了心理学文献中提出的一个更广泛的观点。对一个过程负责可能比对一个结果负责更好。像这个和这个这样的研究发现,如果你被要求对结果负责,问责制最终会给你带来狭隘的视野,并阻碍批判性的创新思维。
这可能是因为对结果负责会鼓励你在你想要产生的结果的背景下证明你所做的一切,而不是诚实地评估你的行为。这可能会让你继续朝着那个结果努力,即使在调整你的目标变得更加有益之后。
另一方面,对一个过程负责与更好的结果相关,因为它让你致力于工作,但让你自由地批判性地评估,并随着你的进展对你的目标进行合乎逻辑的调整。
换句话说:不要告诉你的朋友你将成为一名数据科学家。告诉他们你每周将花 10 个小时学习和编码(然后每周给他们发送你所做的更新)。
还有一个原因,你不应该告诉朋友你的目标是成为一名数据科学家。对于我们中的许多人来说,成为数据科学家是一个职业目标,但它也是一个身份目标—我们喜欢被他人视为数据科学家的想法。那种想要改变我们身份的愿望可以成为一种激励力量,帮助我们朝着目标前进。但是最近的一项研究表明,公开分享身份目标会破坏他们。当你说你打算成为一名数据科学家时,人们可能会在你真正成为数据科学家之前就开始把你视为一名数据科学家(你也可能开始这样看待自己)。那种成为数据科学家的感觉是你努力工作的回报的一部分,所以如果你在达到目标之前已经得到了一点,你可能就没有坚持到底的内在动力了。
回顾:这里的教训是,如果你要分享,你应该分享关于你承诺要做的工作的过程目标。
当谈到社交媒体分享时,答案明显更加模糊。
上面讨论的更广泛的研究表明,社交媒体分享可能是一个坏主意,因为它是与陌生人而不是朋友分享,并且它给你很少的机会来调节你得到的反馈类型是否有用。此外,像这样的研究表明,听到竞争可能会阻止学生学习,社交媒体充满了其他人学习和成功的故事。
另一方面,这些研究中没有一项是专门针对社交媒体的(其中许多是在社交媒体存在之前进行的)。还有一些研究着眼于社交媒体分享,并发现社交分享和目标实现之间的相关性。例如,这项关于减肥的研究发现,加入 Twitter 社区并在社交媒体上分享进展和技巧与有效减肥有关。
然而,尚不清楚这些结果在多大程度上可能取决于参与的特定社区,以及它们是否可能被暴露于竞争的负面影响所抵消(在数据科学等不断增长的领域中有很多)。说到社交媒体,我们唯一能确定的是是否需要更多的研究。
在我们得意忘形之前,有一些重要的警告:
- 一些科学研究不能证明任何事情,心理学——就像科学研究的所有领域一样——是一个不断发展的领域,随着新信息的出现,主流观点可能会发生变化。
- 每个人都是不同的,对你最有效的方法可能与多年来对大多数参与者最有效的方法不同。
- 我们只是在谈论优化你的机会。决定你成功的最关键因素是你付出了多少努力。在最好的情况下,像这样的提示可以给你一个微小的统计优势。
综上所述,如果你想最大化你实现目标的机会,看起来你应该分享它们,但是在这样做的时候,你应该遵循以下指导方针:
- 与朋友分享,而不是陌生人。如果可能的话,选择那些在给你反馈时愿意满足你的要求的人(见下面的第 4 和第 5 条),否则他们最终可能会带来更多的伤害而不是帮助。
- 分享过程目标,而不是结果或身份。不要告诉你的朋友你计划在四个月后成为一名数据科学家。告诉他们你计划每周花 10 个小时来学习、编码和构建项目。
- 用书面更新经常签到。
- 要求“过程表扬”而不是“个人表扬”或者选择一个自然倾向于称赞你的努力或你在完成任务时采用的策略的朋友,而不是称赞你与生俱来的智力或天赋。
- 先寻求正面反馈,然后在寻求负面反馈。
- 在社交媒体上打自己的电话,但避免关注竞争。特别是在早期,你想的是你在做什么*,而不是其他人在做什么。*
还不是学生?加入我们,开始免费学习数据科学。
已经是学生了?在 Twitter 上给我们留言,让我们知道什么最适合你——你是与世界分享你的过程还是秘密工作?
原文:https://www.dataquest.io/blog/dong-zhou/
December 20, 2016
在博士后岗位上工作了 4 年后,董舟开始重新评估学术界。“就薪酬和稳定性而言,这不是一份真正的工作。我决定放弃博士后,尝试在工业界工作。”
董开始探索学习软件开发和数据科学。“我开始试图通过书本学习,但我错过了项目,以及如何将所有东西放在一起。”
“在那之后,我尝试了 Coursera,但我不喜欢视频决定我学习速度的方式。”
在读了 Dataquest 博客上的一篇文章后,董尝试用 Dataquest 学习。
董认为职业咨询是他成功的关键。“我从 Vik 那里得到了很多建议。因为我以前从未在工业界工作过,所以我能够向他了解他的经历。”
在 Dataquest 之前,我学习错误的东西是在浪费时间。Dataquest 给我指出了正确的方向。
“我问了他很多关于找工作的问题。这对我找工作有很大的帮助。有一个资深人士指导你是非常有帮助的。”
董成功地在薛定谔公司找到了一份高级软件开发员的工作。他开发用于制药、生物技术和材料科学研究的化学模拟软件。
“我是一个软件开发团队的成员。我可以把我的科学背景和我的新职业结合起来。”
“我喜欢 Dataquest,因为我可以控制自己解决问题的速度。小规模项目有助于实现从概念到现实的转变。”
“在 Dataquest 之前,我一直在浪费时间学习错误的东西。Dataquest 给我指出了正确的方向。我已经向正在找工作的朋友推荐了 Dataquest。”
“Dataquest 帮助我找到了一份行业工作。我希望我能早点发现它。”
原文:https://www.dataquest.io/blog/double-salary-dataquest-student/
September 19, 2019
维多利亚·古兹克在大学学习接近尾声时发现自己遇到了一个问题。
“我的本科教育实际上是神经科学,”她说,“但我意识到他们不会真的让你用本科学位做神经科学。这是那种需要上升到博士水平的事情。”
她真的想用接下来的五年时间来完成一篇论文吗?她不确定。但是当她反思自己的学习时,她意识到有些事情她是有把握的。“我在本科教育中真正喜欢的一点是统计方法的基础和数据分析的使用,”她说。
她决定继续努力。“我尽可能地接受了最初的几份工作,”她说。“我在一家实验室担任研究助理。我在一家非营利机构做了几年文书工作。”但是她意识到她需要提升自己的数据技能。她就是这样找到 Dataquest 的。
她说:“在内特·西尔弗(Nate Silver)成名的 15 分钟前后,我们突然不再是统计学家了,我们都是数据科学家。”。“因此,我对这个新奇的新术语做了一些研究,Dataquest 推荐我去哪里获得 Python 和 R 方面急需的基础知识,以及本科课程中可能无法获得的更深入的编程知识。”
“这就是 Dataquest 教育的力量。这份工作找到了我
因此,维多利亚开始学习 Dataquest 的数据科学课程。“我真的很喜欢你的平台,”她说。“我研究了其他几个,发现它们太容易拿了,填补了 Dataquest 方法的空白。”
Dataquest 第一次收到维多利亚的来信是因为她想取消订阅。原因?她找到了一份数据分析师的工作。事实上,她甚至没有申请就得到一份数据分析师的工作!
“我完成了 Dataquest 上的项目,完成了课程路径,并在你更新平台的一年多时间里跟上了新内容,因此我是一名订户,”她说。“最终,我在 LinkedIn 上表示,我对招聘人员持开放态度.”
就这么简单。
“这就是数据科学教育的力量,也是数据探索教育的力量,”她说。“这份工作找到了我。”
一个招聘人员给她发信息,她跟进了。她很快被安排了一次 Skype 采访,然后是一次面对面的采访。“他们问了我一些编程问题,我的回答让他们很满意。然后他们问我以前的编程工作的一些例子,我给了他们我的 GitHub。她说:“我指出了几个项目,它们特别关注数据分析师优先考虑的事情。
她说他们特别喜欢她完成的一个 Dataquest 引导的项目,该项目对一个电子服务产品的潜在目标市场进行了细分。“他们对此非常热情,”她说。“我绝对可以强调,该项目特别适用于数据分析和数据科学在野外的真实应用。”
事实上,该公司对维多利亚非常热情,以至于在他们第一次就该职位与她联系不到一周后,他们就向她发出了邀请。这是个好主意。
“一夜之间,我的收入翻了一番,”她说。“那份工作一夜之间让我的收入翻了一番.”
不用说,她接受了。她现在是 Callisto Media 的数据分析师。
“我每天上班都编码,”她说。“我积极参与我们的研究,积极开发我们的产品。”她说,在平常的一天,她会写 Python 代码来做一些事情,比如为公司产品分析市场。
“我对自己的现状和 Dataquest 让我发展的技能感到非常满意,”她说。
“数据科学是一个奇妙的领域,超越了任何编程学科,”Victoria 说。“我发现这是最好的机会之一,不仅可以从事引人入胜的技术工作,还可以从事对世界有积极影响的工作。”
如果你想追随维多利亚的脚步,她有三条建议。
首先:“在(你)寻找任何其他来源之前,绝对要先看看 Dataquest,”她说。“我认为,就你发展的技能和你发展这些技能的时间表而言,这是你的时间和金钱的**价值。”
“一夜之间,我的收入翻了一番.”
第二:“一定要确保不要只是为了做而做项目,而是要确保真正理解它们,并将它们融入到商业环境中,”她说。“回去在笔记本上解释你的代码。不要仅仅把[指导项目]当作家庭作业。你希望在这些项目上投入和你在工作中展示的项目一样多的关心和努力。公司确实对此做出了回应。”
第三:“拥有这些技术技能固然重要,”她说,“但你真的需要深刻理解如何获取数据和分析,并将其转化为对业务的可操作见解。”
她说,这是她推荐 Dataquest 的重要原因。“我真的认为 Dataquest 和他们的项目模型不仅提供了那些硬编程技能,还教会了你如何以有意义的方式应用它们。”
原文:https://www.dataquest.io/blog/enormous-survey-reveals-the-best-halloween-candies/
October 30, 2021
对于我们这些喜欢糖果的人(也就是所有人)来说,万圣节可以说是最好的节日了。我一直喜欢万圣节,因为不管你多大,你可能都想要某种类型的糖果。但是,离这个季节只有几天了,你可能会想知道两件事:你会穿什么服装,以及(更重要的)你如何确保你得到了不给糖就捣蛋的人想要的糖果?
根据你住的地方,你也许能猜出什么糖果比你所在地区的其他糖果做得更好。但是,思考并不总是足以做出明确的决定。幸运的是,数据和调查让我们有更好的机会做出正确的选择。
特别是在万圣节,有一个数据集很有趣,它揭示了**糖果选择的秘密。2017 年, FiveThirtyEight 创建了一个数据集 ,根据超过 26.5 万名参与者的随机匹配,比较了 85 种有趣大小的流行糖果,以一劳永逸地决定真正的万圣节糖果之王。
现在,作为一名热爱糖的数据科学家,为万圣节做准备,我不能错过探索这个数据集的机会,看看我应该在购物清单上添加什么糖果。
最终的万圣节糖果权力排名数据集基于 12 个特征变量比较了 85 种糖果,其中 9 个是描述糖果性质和内容的二元变量,例如它们是否包含巧克力、焦糖或坚果;它们是固体糖果还是棒状的,等等。剩下的 3 个变量描述了糖果的含糖量(或者我认为的甜度),价格,以及基于其他 11 个变量的获奖率。
我们需要首先看到这些数据,以使用这个数据集来决定这个万圣节最好的糖果——或者只是知道哪个是最好的万圣节糖果。所以,让我们从使用 Python 和熊猫 T3 的简单 数据探索开始。
1。加载数据并浏览基本信息
从 GitHub 克隆数据集后,我们需要将数据集加载到 Pandas 数据框架中,并探索不同的方面,如数据集的大小和其中变量的类型。我们甚至可以将精度设置为 2 个小数点,以便更容易地处理浮点数字数据。
讯享网

我们还可以使用 candy.info()来确定数据集中的变量类型

我们可以使用 candy.info()获得基本的统计数据

2。访问和查询数据集
了解变量类型和数据集的构造将允许我们使用简单的查询和分组来探索数据。例如,我们可以只显示含有巧克力和焦糖的糖果,或者显示胜率为 70%或更高的糖果。我们也可以把两个条件放在一起,看看什么巧克力-焦糖糖果的中奖概率会更高。

我们还可以确定任何含有巧克力的糖果相对于同时含有巧克力和焦糖的糖果的平均获胜百分比,以及如果糖果含有巧克力、焦糖和坚果,该百分比将如何变化(将为 60.92%)。
candy.groupby(‘巧克力’)[‘winpercent’]。均值()[1]
3。可视化数据
探索任何新数据集时,我最喜欢的部分是可视化数据。虽然你可以通过查询数据、对一些列和行进行分组,并以书面形式分析数据的内容,但因为我们是视觉动物,所以当信息可视化时,我们会更好地感知信息。此外,有时数据可能包含隐藏的模式或趋势,您只能通过可视化来发现。
假设我们想知道甜度或价格是否会影响糖果的百分比。我们可以用散点图来显示甜度、价格和胜率。如果我们这样做,我们会发现这两个因素之间没有直接的联系。我们可以看到,一些甜度高的糖果,中奖几率很低。价格并不是决定一颗糖果输赢的决定性因素。
讯享网

所以,这将导致我们想知道哪个因素影响糖果中奖的百分比。然后,我们可以关注 9 个二元变量,看看每个变量如何影响胜率。我们可以从绘制这 9 个变量的平均胜率开始。

从那里,我们可以看到,含有巧克力、坚果(花生或杏仁)和一种酥脆元素(如威化饼)的糖果获胜的几率最高。如果我们根据胜率降序排列数据,然后根据胜率绘制前 10 种糖果,我们会发现这些糖果都含有巧克力和坚果成分。在这个数据集中,前两种糖果是里斯的花生酱杯和它的继任者,迷你里斯的。
从平均值中,我们还可以看到,如果糖果含有水果成分或者是硬糖,他们获胜的机会将比坚果巧克力竞争者少得多。
讯享网

从我们在这个数据集上使用的简单的 数据探索技术 来看,我可以非常自信地告诉你,如果你想在这个万圣节成为热门,就去买含有巧克力、坚果和松脆成分的糖果。这一定会让你的房子成为今年不给糖就捣蛋的人的最爱。
除了赢得万圣节的“不给糖就捣蛋”之战,你还可以使用这个数据集来决定下次聚会要带哪种糖果。你也可以用这个数据集来训练一个机器学习模型,来预测这个数据集中没有的其他糖果的胜率。最后,您可以使用这个数据集和一些聚类算法,根据超过 25 万人的意见创建一个完美糖果的公式。
所以,下次你在选择糖果来满足你的甜食时,要知道这些数据总能帮助你做出更明智的决定。毕竟,没有什么比万圣节前分析糖果更有趣的了。
原文:https://www.dataquest.io/blog/entry-level-data-science-job-application-tips/
March 5, 2019
毫无疑问,数据科学家的需求量很大。但是缺乏更高层次的数据科学家,加上媒体炒作的“最性感的工作”,吸引了大量新鲜血液进入这个行业。当涉及到入门级职位时,这导致了比你想象的更多的竞争。
那么如何才能获得数据科学的入门级工作呢?我们已经分享了一些来自数据科学家的好建议,但是为了了解更多,我们采访了 Stephanie Leuck。作为数据分析公司 8451 的大学招聘经理,斯蒂芬妮花了大量时间处理入门级数据科学工作申请,她已经见过数千份这样的申请。
我们请她分享了一些关于入门级数据科学申请人如何脱颖而出的见解。以下是她告诉我们的:
由于入门级的申请人通常不会有任何工作经验,斯蒂芬妮说她正在寻找下一个最好的东西:做数据科学相关工作的成功证据。
“我在寻找不同技能组合的项目范例,”她说。"你知道,统计项目或面向数据科学的项目,商业分析."具体来说,她喜欢看到展示申请者“具有数据科学家所需的批判性思维和解决问题的能力,以及一些编码经验”的项目
这并不意味着她想在你的简历上看到代码,但她确实想看到编码技能的证据。你展示的项目应该展示你理解数据科学家需要解决的问题,并且应该展示你知道如何使用 SQL、R 或 Python 来解决这些问题。
你展示的项目也应该是独一无二的。斯蒂芬妮说,看到共同的项目不会伤害和她一起的初级申请人,因为所有的实践都是好的实践。但是她知道网上有几十个关于这些项目的教程,所以他们不太可能给她留下深刻印象,因为她知道你可能只是跟着一个教程。
“如果(你的项目)是一个更具原创性的想法或创意,那将增加更多的权重,”她说。
斯蒂芬妮说,初级申请人可能会让招聘人员的眼睛变得呆滞无神,因为他们对项目的描述含糊不清,不能清楚地表明申请人实际做了什么。像“我使用了统计方法来分析……”或“我将数据科学技术应用于数据……”这样的描述不能给招聘人员任何真实的信息,它们暗示你可能并不真正知道自己在做什么。
相反,斯蒂芬妮说,你应该清楚自己做了什么。这并不意味着你需要包括每一个微小的细节,但是如果你正在描述一个项目,你可能需要包括你在描述中使用的编码语言和具体的统计方法。
所以,举例来说,不要说‘我用统计方法分析了…’,你应该说‘我用 R 做了泊松回归,分析了[我的项目题目]。’这告诉招聘人员你有使用这种特定语言和这种特定统计概念的经验。如果您在数据科学工作中经常使用特定的包或库,您甚至可能希望包括它们的详细信息。
没有工作经验,展示你的项目是至关重要的,至少,你需要有一个 GitHub。斯蒂芬妮说:“我认为 GitHub 是必不可少的。
“GitHub 或网站是很好的资源,因为它很容易访问,”她说。“这是你应该放在简历上的东西,但要确保上面有有价值的信息,是最新的,是活跃的。否则它会伤害你。”
斯蒂芬妮说,在 8451,他们不会在 GitHub 上寻找特定类型的项目,因为该公司处理各种各样的数据科学工作。因此,她说,他们“寻找那些更有激情、终身学习的人。”
“我宁愿看到(申请人)只是涉猎不同的语言,比如 R 或 Python,甚至一些更面向计算机科学的语言,”她说,“只是练习、构建和测试。”
斯蒂芬妮说,无论你包括什么,都要做得好,不要认为 GitHub 是理所当然的。“我认为 GitHub 是一个令人惊叹的工具,它基本上可以让你展示你可以在没有工作的情况下完成这项工作。没有多少行业可以做到这一点。”
大多数数据科学应用程序不包括求职信;斯蒂芬妮估计,她看到的应用程序中只有二十分之一配有一个。取决于申请什么时候来,它甚至可能不会被看:“如果我们在秋季,我们在看成千上万的简历,我没有时间也看你的求职信。”
可能有一些很好的理由来提交求职信,特别是如果你正从一个不同的职业进入数据科学,或者在获得一个不相关的学位后进入数据科学。斯蒂芬妮说,如果你能很好地展示你如何为自己在数据科学领域的职业生涯做好准备,求职信可以是解释这一点的好地方。
但这是一个危险的游戏:“我经常看到(求职信)伤害候选人,因为它太模糊了,他们列出了错误的公司,或者它实际上让我质疑:‘你知道你想做什么吗?’"
“如果你提交一封求职信,”她说,“确保它是一封好的。确保它是为公司量身定做的,确保里面有一些有价值的信息。这个想法是,除了简历上的内容之外,求职信还应该为你说话。不要给我重复简历。
斯蒂芬妮说,雇主不指望入门级的申请人完全掌握每一项可能的技术技能,所以如果你对 Python 或 R 和 SQL 有扎实的掌握,你可能拥有获得数据科学工作所需的所有编程技能。
但是除了技术技能之外,你还需要了解你正在使用的统计方法,以及如何应用它们来解决实际问题。如果你知道如何在你的代码中使用线性回归模型,但是你不知道何时或者为什么要应用线性回归模型,那就有问题了。在应用你的技术技能之前,你需要能够批判性地思考,评估问题是什么以及如何解决它。
“我们可以教你如何编码,”斯蒂芬妮说,“但你需要知道如何思考。”
这可能很难在简历中表现出来,但一种方法是展示解决了业务问题的项目,并简要地解释问题是什么以及你的项目如何帮助解决问题。您也可以在 Github 上更深入地了解这类事情。对你的分析解决了什么业务问题、为什么你已经应用了你所做的技术,以及你的结果如何解决了那个问题,这些都有助于证明你不仅仅是编码,你正在使用你的编码和统计技能来识别和解决真正的问题。
(还不具备实现这一目标所需的编码技能或统计知识吗? Dataquest 可以教你从零开始用 Python 或者 R 编码,我们也教你如何并且更重要的是什么时候和为什么应用各种统计和机器学习方法)。
斯蒂芬妮说:“我们不希望有人只是坐在电脑前写代码。”。“我们需要一个有贡献的团队成员。”
“我们在团队中工作,”她谈到 8451。“我们这里是一个高度协作的工作环境,因此在一个有共同愿景的团队中工作的能力非常重要。其中一部分是对反馈持开放态度,乐于接受反馈,并愿意在需要时提出建设性的批评,比如挑战现状。”
虽然她具体谈到了 8451,但大多数公司都希望在任何职位的入门级求职者身上看到沟通和团队合作技能。对于数据分析师和数据科学家来说尤其如此,因为数据工作通常涉及与其他团队的频繁接触、沟通和协作。即使数据科学团队本身很小,但在一年的时间里,数据科学家与公司的许多其他团队一起收集和分析数据、构建仪表板、进行预测等并不罕见。
那么,你如何在简历中证明你确实拥有这些技能呢?斯蒂芬妮说:“我们喜欢看到人们参与课程之外的事情。”“可以是学生组织、网络组织、社区组织。当然,如果他们是面向数据科学或技术的,会有所帮助。参加案例研究竞赛、黑客马拉松……这些都是可以在简历上展示的好东西,因为这告诉我们你最有可能在一个团队中工作过。”
团队项目是展示这些技能的另一个好方法。斯蒂芬妮说,她很高兴在简历中看到团队项目,因为“这给了我一个跳板,让我可以说‘那么,你在那个团队里是谁?你的角色是什么?你的队友会如何描述你?我可以开始接触一些软技能,以了解你是否是一名团队成员。"
但她也发出了警告:不要成为那种说:‘是的,我团队里的每个人,没有人做工作,我必须领导一切。’
“这让我有点担心,”她说。
如果你希望得到面试的回复,你对任何职位的求职申请都需要脱颖而出。上面所有的建议都应该有所帮助,但是如果你正在寻找一个总结一切的大收获,那就是:对于初级职位,你的工作申请应该显示你能做这份工作。
如果没有工作经验可以评估,招聘人员的第一个任务就是判断你是否具备工作所需的技能。你需要确保你的简历切实证明你拥有这些技能。
- 展示项目,展示你的编程和数据科学技能,并具体描述你做了什么。
- 拥有一个活跃的 Github,表明你正在定期进行数据科学工作,并且你了解你所做工作的背景以及它如何帮助解决业务问题。
- 参加聚会、黑客马拉松和团队项目,展示团队合作和其他软技能。
如果你能处理好应用程序的这些方面,你就能让自己脱颖而出。
免费注册获取我们的每周时事通讯,包括数据科学、 Python 、 R 和 SQL 资源链接。此外,您还可以访问我们免费的交互式在线课程内容!
SIGN UP
原文:https://www.dataquest.io/blog/eric-salesdeandrade/
April 25, 2018
Eric Sales De Andrade 通过 Quora 来到 Dataquest。“我读了 Vik 的回复,他似乎知道自己在写什么。”
当时,他从事数据挖掘——“但只是把东西放进数据库。我想要真实的数据。”
他最初尝试了 DataCamp 和 Coursera 上的机器学习课程。但是他想要更实际的东西,使用 Python 和 r 处理真实数据集。
在试用了免费模块后,他认为 Dataquest 是一个很好的选择,因为它提供了有趣的数据集和衡量进展的 KPI。
这是有道理的——投资你的教育,获得一份高薪的工作。
他利用了 Dataquest 内部强大的支持系统,例如面向学生的 Slack channel。“社区是高级订阅的卖点之一。非常有用。”
埃里克获得了几次面试机会,现在是伦敦初创公司 Intelematics 的数据科学家和工程师。他整天致力于可视化和构建仪表板、管道和模型。
他建议同学们不要被吓倒。“一家公司不会指望你在第一周就开发神经网络。打好基础,然后计划在工作中提高自己的技能。”
原文:https://www.dataquest.io/blog/evolution-of-data-science-growth-innovation/
October 21, 2021
术语“数据科学”以及实践本身已经发展了多年。近年来,由于世界范围内数据收集、技术和大规模数据生产方面的创新,它的受欢迎程度有了相当大的提高。那些处理数据的人不得不依赖昂贵的程序和大型机的日子已经一去不复返了。像 Python 这样的编程语言以及收集、分析和解释数据的过程的激增为数据科学成为今天的热门领域铺平了道路。
数据科学始于统计学。数据科学发展的一部分是包含了机器学习、人工智能和物联网等概念。随着新信息的涌入和企业寻求增加利润和做出更好决策的新途径,数据科学开始扩展到其他领域,包括医学、工程等。
在本文中,我们将分享数据科学发展的简明摘要-从其作为统计学家梦想的卑微开端到其作为每个可以想象的行业认可的独特科学的当前状态。
在本文中,我们将分享数据科学发展的简明摘要-从其作为统计学家梦想的卑微开端到其作为每个可以想象的行业认可的独特科学的当前状态。
我们可以说,数据科学诞生于应用统计学与计算机科学相结合的想法。由此产生的研究领域将利用现代计算的非凡能力。科学家们意识到,他们不仅可以收集数据和解决统计问题,还可以使用这些数据来解决现实世界的问题,并做出可靠的基于事实的预测。
1962: 美国数学家约翰·w·图基(John W. Tukey)首次阐述了数据科学梦想。在他现在著名的文章《数据分析的未来》中,他预见到在第一台个人电脑出现前近二十年一个新领域的必然出现。虽然图基走在了时代的前面,但他并不是唯一一个早期欣赏后来被称为“数据科学”的人。另一位早期人物是丹麦计算机工程师彼得·诺尔,他的著作《计算机方法简明概览》提供了数据科学的最早定义之一:
一旦建立了数据,处理数据的科学,而数据与其所代表的关系则委托给其他领域和科学
1977: 随着国际统计计算协会(IASC)的成立,Tukey 和 Naur 等“前”数据科学家的理论和预测变得更加具体,该协会的使命是“将传统统计方法、现代计算机技术和领域专家的知识联系起来,以便将数据转化为信息和知识。”
20 世纪 80 年代和 90 年代:随着第一次数据库知识发现(KDD)研讨会的出现和国际船级社联合会(IFCS)的成立,数据科学开始迈出更大的步伐。这两个学会是第一批专注于教育和培训数据科学理论和方法专业人员的学会(尽管该术语尚未被正式采用)。
正是在这一点上,数据科学开始获得希望将大数据和应用统计货币化的领先专业人士的更多关注。
1994: 《商业周刊》发表了一篇关于“ 数据库营销新现象的报道。 “它描述了企业收集和利用大量数据来更多地了解他们的客户、竞争或广告技巧的过程。当时唯一的问题是,这些公司被大量信息淹没,超出了它们的管理能力。海量数据引发了人们对为数据管理建立特定角色的第一波兴趣。企业似乎开始需要一种新的员工来让数据为自己服务。
20 世纪 90 年代和 21 世纪初:我们可以清楚地看到,数据科学已经作为一个公认的专门领域出现。一些数据科学学术期刊开始发行,Jeff Wu 和 William S. Cleveland 等数据科学支持者继续帮助开发和阐述数据科学的必要性和潜力。
2000 年代:通过提供几乎普及的互联网连接、通信和(当然)数据收集,技术取得了巨大的飞跃。
2005: 大数据进场。随着谷歌和脸书等科技巨头发现大量数据,能够处理这些数据的新技术变得必要。Hadoop 迎接了挑战,随后 Spark 和 Cassandra 首次亮相。
2014: 由于数据的重要性日益增加,以及组织对发现模式和做出更好的业务决策的兴趣,世界各地对数据科学家的需求开始大幅增长。

来源:https://www . zarantech . com/blog/why-data-science-jobs-is-in-big-demand/
2015: 机器学习、深度学习、人工智能(AI)正式进入数据科学领域。这些技术在过去十年中推动了创新——从个性化购物和娱乐到自动驾驶汽车,以及所有将这些人工智能的现实应用有效带入我们日常生活的见解。
2018: 该领域的新法规可能是数据科学发展的最大方面之一。
2020 年代:我们看到人工智能、机器学习领域的更多突破,以及对大数据领域合格专业人员不断增长的需求
看到我们的世界目前有多少是由数据和数据科学驱动的,我们可以合理地问,我们将何去何从?数据科学的未来会怎样?虽然很难确切知道未来的标志性突破是什么,但所有迹象似乎都表明机器学习的至关重要性。数据科学家正在寻找使用机器学习产生更智能和自主的人工智能的方法。
换句话说,数据科学家正在不知疲倦地致力于深度学习的发展,以使计算机更加智能。这些发展可以带来先进的机器人技术和强大的人工智能。专家预测,在一个前所未有的互联世界中,人工智能将能够理解人类、自动驾驶汽车和自动化公共交通,并与之无缝互动。数据科学将使这个新世界成为可能。
也许,从更令人兴奋的一面来看,我们可能会在不久的将来看到一个大范围自动化劳动的时代。预计这将彻底改变医疗保健、金融、运输和国防工业。
我们仍处于数据科学革命的早期阶段,这是加入的**时机。数据科学是一个令人兴奋和不断发展的职业,只会越来越强大,越来越有必要。随之而来的是对合格人才的大量需求。
对数据科学家的高需求和缺乏有才华的专业人士为有志学习者创造了独特的机会。不同行业和组织越来越多地采用数据科学应用将继续推动需求进一步增长。有了 Dataquest,您可以通过参加我们的 数据科学职业道路 来实现您的职业目标,这将使您在不到一年的时间内从初学者到工作就绪。
原文:https://www.dataquest.io/blog/excel-and-pandas/
December 8, 2017
为什么要用 Python 学习使用 Excel?Excel 是最流行和最广泛使用的数据工具之一;很难找到一个不以某种方式与之合作的组织。从分析师到销售副总裁,再到首席执行官,各种专业人士都使用 Excel 进行快速统计和严肃的数据处理。
随着 Excel 如此普及,数据专业人员必须熟悉它。用 Python 或 R 处理数据比用 Excel 的 UI 更有优势,所以找到一种使用代码处理 Excel 的方法至关重要。令人欣慰的是,已经有一个很好的工具可以将 Excel 与 Python 结合使用,这个工具叫做。
Pandas 拥有从 Excel 文件中读取各种数据的优秀方法。如果您的目标受众喜欢,您也可以将 pandas 中的结果导出回 Excel。Pandas 非常适合其他常规数据分析任务,例如:
- 快速探索性数据分析
- 画出吸引人的情节
- 将数据输入 scikit-learn 等机器学习工具
- 基于您的数据构建机器学习模型
- 将经过清理和处理的数据用于任意数量的数据工具
Pandas 比 Excel 更擅长自动化数据处理任务,包括处理 Excel 文件。
在本教程中,我们将向您展示如何在 pandas 中使用 Excel 文件。我们将涵盖以下概念。
- 用必要的软件安装您的计算机
- 将 Excel 文件中的数据读入 pandas
- 熊猫的数据探索
- 使用 matplotlib 可视化库可视化熊猫中的数据
- 在 pandas 中操作和重塑数据
- 将数据从 pandas 移动到 Excel
请注意,本教程不提供对熊猫的深入研究。要更多地探索熊猫,请查看我们的课程。
我们将使用 Python 3 和 Jupyter Notebook 来演示本教程中的代码。除了 Python 和 Jupyter Notebook,您还需要以下 Python 模块:
- matplotlib–数据可视化
- NumPy–数字数据功能
- open pyxl–读/写 Excel 2010 xlsx/xlsm 文件
- 熊猫–数据导入、清理、探索和分析
- xlrd–读取 Excel 数据
- xlwt–写入 Excel
- XlsxWriter–写入 Excel (xlsx)文件
有多种方法可以设置所有模块。下面我们介绍三种最常见的场景。
- 如果您通过 Anaconda 包管理器安装了 Python,那么您可以使用命令安装所需的模块。例如,要安装 pandas,您可以执行命令-。
- 如果您已经在计算机上安装了一个常规的非 Anaconda Python,那么您可以使用来安装所需的模块。打开你的命令行程序,执行命令安装一个模块。你应该用你要安装的模块的真实名称替换。例如,要安装 pandas,您可以执行命令-。
- 如果您还没有安装 Python,您应该通过 Anaconda 包管理器来获得它。Anaconda 为 Windows、Mac 和 Linux 计算机提供安装程序。如果您选择完整安装程序,您将在一个包中获得您需要的所有模块,以及 Python 和 pandas。这是最简单快捷的入门方式。
在本教程中,我们将使用从 Kaggle 的 IMDB 分数数据创建的多表 Excel 文件。你可以在这里下载文件。

我们的 Excel 文件有三张表:“1900 年代”、“2000 年代”和“2010 年代”每一页都有当年的电影数据。
我们将使用该数据集来查找电影的分级分布,可视化具有最高分级和净收益的电影,并计算关于电影的统计信息。我们将使用 Python 和 pandas 来分析和探索这些数据,从而展示 pandas 在 Python 中处理 Excel 数据的能力。
我们需要首先将 Excel 文件中的数据导入 pandas。为此,我们从导入 pandas 模块开始。
然后,我们使用 pandas 的 read_excel 方法从 excel 文件中读入数据。调用此方法最简单的方法是传递文件名。如果没有指定工作表名称,那么它将读取索引中的第一个工作表(如下所示)。
讯享网
这里,方法将 Excel 文件中的数据读入 pandas DataFrame 对象。Pandas 默认将数据存储在数据帧中。然后,我们将这个数据帧存储到一个名为的变量中。
Pandas 有一个内置的方法,我们可以使用它轻松地显示数据帧的前几行。如果没有传递参数,它将显示前五行。如果传递了一个数字,它将从顶部开始显示相同数量的行。
5 行× 25 列
Excel 文件通常有多个工作表,读取特定工作表或全部工作表的能力非常重要。为了使这变得简单,pandas 方法采用了一个名为的参数,它告诉 pandas 从哪个表中读取数据。为此,您可以使用图纸名称或图纸编号。图纸编号从零开始。如果没有给出参数,则默认为 0,pandas 将导入第一个工作表。
默认情况下,pandas 会自动分配一个从零开始的数字索引或行标签。如果数据中没有包含唯一值的列可以作为更好的索引,您可能希望保留默认索引。如果您认为有一列可以作为更好的索引,您可以通过将属性设置为一列来覆盖默认行为。它采用一个数值来设置一个列作为索引,或者采用一个数值列表来创建一个多索引。
在下面的代码中,我们选择第一列“Title”作为索引(index=0),方法是将 0 传递给参数。
讯享网
5 行× 24 列
正如您在上面注意到的,我们的 Excel 数据文件有三张表。我们已经阅读了上面数据框中的第一页。现在,使用相同的语法,我们也将读入两张表的其余部分。
5 行× 24 列
讯享网
5 行× 24 列
由于所有三个工作表都有相似的数据,但记录移动不同,我们将从上面创建的所有三个数据帧中创建一个数据帧。为此,我们将使用 pandas 方法,传入我们刚刚创建的三个数据帧的名称,并将结果分配给一个新的数据帧对象。通过保持数据帧名称与之前相同,我们覆盖了之前创建的数据帧。
我们可以通过检查组合数据帧中的行数来检查这种连接,方法是对其调用方法,该方法将给出行数和列数。
讯享网
使用 ExcelFile 类读取多个工作表
我们还可以使用 ExcelFile 类来处理同一个 Excel 文件中的多个工作表。我们首先使用包装 Excel 文件,然后将其传递给方法。
讯享网
如果您正在读取一个包含许多工作表的 Excel 文件,并且正在创建许多数据帧,那么与相比,更加方便和高效。使用 ExcelFile,您只需要传递一次 Excel 文件,然后就可以使用它来获取数据帧。使用时,每次都要传递 Excel 文件,因此每个工作表都要重新加载该文件。如果 Excel 文件有许多包含大量行的工作表,这可能会严重影响性能。
现在我们已经从 Excel 文件中读取了电影数据集,我们可以开始使用 pandas 来研究它。pandas DataFrame 以表格格式存储数据,就像 Excel 在工作表中显示数据的方式一样。Pandas 有许多内置方法来探索我们从刚刚读入的 Excel 文件中创建的数据帧。

我们已经在前一节中介绍了方法,该方法显示数据帧中从顶部开始的几行。让我们看看在探索数据集时更方便的一些方法。
我们可以使用方法找出数据帧的行数和列数。
讯享网
这告诉我们,我们的 Excel 文件有 5042 条记录和 25 列或观察值。这对于报告记录和列的数量并将其与源数据集进行比较非常有用。
我们可以使用方法来查看底部的行。如果没有传递参数,则只返回底部的五行。
5 行× 25 列
在 Excel 中,您可以根据一列或多列中的值对工作表进行排序。在熊猫身上,你可以用方法做同样的事情。例如,让我们根据总收入列对电影数据帧进行排序。
讯享网
因为我们有按列中的值排序的数据,所以我们可以用它做一些有趣的事情。例如,我们可以按总收入显示前 10 部电影。
讯享网
我们还可以根据总收入为前 10 名电影创建一个情节。Pandas 通过 matplotlib(一个流行的数据可视化库)可以很容易地用图和图表可视化您的数据。有了几行代码,你就可以开始绘图了。此外,matplotlib 绘图在 Jupyter 笔记本中工作良好,因为您可以在代码下移动绘图。
首先,我们导入 matplotlib 模块,并设置 matplotlib 在 Jupyter 笔记本中显示绘图。
我们将绘制一个条形图,其中每个条形代表前 10 部电影中的一部。我们可以通过调用 plot 方法并将参数设置为来实现这一点。这告诉画一个单杠图。
讯享网

让我们创建一个 IMDB 分数直方图,以检查 IMDB 分数在所有电影中的分布。直方图是可视化数据集分布的好方法。我们对来自电影数据帧的 IMDB 分数序列使用方法,并向其传递参数。

这种数据可视化表明,大多数 IMDB 得分在 6 到 8 分之间。
Pandas 有一些非常方便的方法来查看我们数据集的统计数据。例如,我们可以使用方法来获得数据集的统计摘要。
讯享网
方法显示每一列的以下信息。
- 值的计数或数量
- 意思是
- 标准偏差
- 最小值、最大值
- 25%、50%和 75%分位数
请注意,此信息仅针对数值进行计算。
我们也可以使用相应的方法一次访问一个信息。例如,要获得特定列的平均值,可以对该列使用方法。
讯享网
就像均值一样,对于我们想要访问的每个统计信息,都有可用的方法。你可以在我们的免费熊猫小抄中读到这些方法。
在本教程的前面,我们看到了一些读取特定类型的 Excel 文件的方法,这些文件有标题,没有需要跳过的行。有时,Excel 表没有任何标题行。对于这种情况,您可以告诉 pandas 不要将第一行视为标题或列名。如果 Excel 表的前几行包含不应该读入的数据,您可以要求方法从顶部开始跳过一定数量的行。
例如,看看这个 Excel 文件的前几行。
这个文件显然没有标题,前四行不是实际记录,因此不应该读入。我们可以通过将参数设置为来告诉 read_excel 没有标题,并且我们可以通过将参数设置为 4 来跳过前四行。
5 行× 25 列
我们跳过了工作表中的四行,没有使用任何一行作为标题。另外,请注意,可以在一个 read 语句中组合不同的选项。要跳过工作表底部的行,您可以使用选项,它的工作方式与类似,唯一的区别是行是从底部向上计数的。
前面数据帧中的列名是数字,由 pandas 默认分配。我们可以通过调用 DataFrame 上的方法并将列名作为列表传递来将列名重命名为描述性的名称。
讯享网
5 行× 25 列
现在我们已经看到了如何从 Excel 文件中读取行的子集,我们可以学习如何读取列的子集。
尽管 read_excel 默认读取并导入所有列,但您可以选择仅导入某些列。通过传递 parse_cols=6,我们告诉方法只读取第一列,直到索引 6 或前 7 列(第一列的索引为零)。
或者,您可以传入一个数字列表,这将允许您在特定索引处导入列。
Excel 常用的功能之一是应用公式从现有列值创建新列。在我们的 Excel 文件中,我们有总收入和预算列。我们可以从总收入中减去预算得到净收益。然后,我们可以将 Excel 文件中的公式应用于所有行。我们可以在熊猫身上这样做,如下图所示。
讯享网
在上面,我们使用 pandas 创建了一个名为净收入的新列,并用总收入和预算的差额填充它。值得注意的是 Excel 和 pandas 在公式处理上的不同。在 Excel 中,一个公式存在于单元格中,并在数据改变时更新——使用 Python,计算发生,值被存储——如果一部电影的总收入被手动改变,净收入不会被更新。
让我们使用方法根据我们创建的新列对数据进行排序,并根据净收入可视化排名前 10 位的电影。

高级 Excel 用户也经常使用数据透视表。数据透视表通过对索引上的数据进行分组并应用排序、求和或平均等操作来汇总另一个表的数据。你也可以在熊猫身上使用这个功能。
我们需要首先确定将用作索引的一列或多列,以及将应用汇总公式的列。让我们从小处着手,选择 Year 作为索引列,选择 Gross Earnings 作为汇总列,并根据这些数据创建一个单独的数据框架。
讯享网
我们现在对这个数据子集调用。方法接受一个参数。如前所述,我们希望使用年份作为索引。
这给了我们一个数据透视表,它按年份分组,按总收入汇总。请注意,我们不需要明确指定总收入列,因为 pandas 会自动确定汇总应该应用的值。
我们可以使用这个数据透视表来创建一些数据可视化。我们可以调用 DataFrame 上的方法创建一个线图,并调用方法在笔记本中显示该图。
讯享网

我们看到了如何将单个列作为索引进行透视。如果我们可以使用多个列,事情会变得更有趣。让我们创建另一个数据框架子集,但这次我们将选择国家、语言和总收入列。
我们将使用国家和语言列作为数据透视表的索引。我们将使用总收入作为汇总表,但是,我们不需要像前面看到的那样明确指定。
讯享网
让我们用条形图来可视化这个数据透视表。由于这个数据透视表中还有几百条记录,我们将只画出其中的几条。

如果你要和使用 Excel 的同事一起工作,在 pandas 中保存 Excel 文件是很重要的。您可以使用 pandas 方法将 pandas 数据帧导出或写入 Excel 文件。Pandas 在内部使用 Python 模块写入 Excel 文件。在我们想要导出的数据帧上调用了方法。我们还需要传递一个文件名,这个数据帧将被写入其中。
讯享网
默认情况下,索引也会保存到输出文件中。然而,有时索引并不提供任何有用的信息。例如,数据帧有一个数字自动递增索引,它不是原始 Excel 数据的一部分。
5 行× 26 列
您可以通过传递 index-False 来选择跳过索引。
讯享网
在将输出文件发送给同事之前,我们需要能够使输出文件看起来更好。我们可以使用 pandas 类和 Python 模块来应用格式。
我们可以通过创建一个对象来使用这些高级输出选项,并使用该对象写入 EXcel 文件。
我们可以通过在我们正在写入的工作簿上调用来应用定制。这里我们将标题格式设置为粗体。
讯享网
最后,我们通过调用 writer 对象上的方法来保存输出文件。
例如,我们保存了列标题设置为粗体的数据。保存的文件如下图所示。

像这样,可以使用将各种格式应用到输出的 Excel 文件。
熊猫不是 Excel 的替代品。这两种工具在数据分析工作流中都有自己的位置,并且可以成为非常好的配套工具。正如我们所展示的,pandas 可以进行大量复杂的数据分析和操作,这取决于您的需求和专业知识,可以超越您仅使用 Excel 所能实现的。在 Excel 上使用 Python 和 pandas 的主要好处之一是,它通过编写脚本和与自动化数据工作流集成来帮助您自动化 Excel 文件处理。Pandas 也有从 Excel 文件中读取各种数据的优秀方法。如果您的目标受众喜欢,您也可以将 pandas 中的结果导出回 Excel。
另一方面,Excel 是一个如此广泛使用的数据工具,忽视它是不明智的。获得 pandas 和 Excel 的专业知识,并让它们一起工作,可以让你获得帮助你在组织中脱颖而出的技能。
如果你想了解更多关于这个话题的信息,请查看 Dataquest 的交互式 Pandas 和 NumPy Fundamentals 课程,以及我们的Python 数据分析师和Python 数据科学家路径,它们将帮助你在大约 6 个月内做好工作准备。
原文:https://www.dataquest.io/blog/excel-vs-python/
December 3, 2019
在本教程中,我们将通过查看如何跨两种平台执行基本分析任务来比较 Excel 和 Python。
Excel 是世界上最常用的数据分析软件。为什么?一旦你掌握了它,它就很容易掌握并且相当强大。相比之下,Python 的名声是更难使用,尽管一旦你学会了它,你可以做的事情几乎是无限的。
但是这两个数据分析工具实际上是如何比较的呢?他们的名声并不真正反映现实。在本教程中,我们将了解一些常见的数据分析任务,以展示 Python 数据分析的易用性。
本教程假设您对 Excel 有中级水平的了解,包括使用公式和数据透视表。
我们将使用 Python 库 pandas ,它的设计是为了方便 Python 中的数据分析,但是本教程不需要任何 Python 或 pandas 知识。
在我们开始之前,您可能想知道为什么 Python 值得考虑。你为什么不能继续用 Excel 呢?
尽管 Excel 很棒,但在某些领域,像 Python 这样的编程语言更适合某些类型的数据分析。以下是我们的文章中的一些理由【Excel 用户应该考虑学习编程的 9 个理由:
- 您可以阅读和处理几乎任何类型的数据。
- 自动化和重复性的任务更容易。
- 处理大型数据集要快得多,也容易得多。
- 别人更容易复制和审核你的作品。
- 查找和修复错误更加容易。
- Python 是开源的,所以你可以看到你使用的库背后是什么。
- 高级统计和机器学习能力。
- 高级数据可视化功能。
- 跨平台稳定性—您的分析可以在任何计算机上运行。
需要说明的是,我们并不提倡抛弃 Excel 它是一个有很多用途的强大工具!但是作为一个 Excel 用户,能够利用 Python 的强大功能可以节省您数小时的时间,并开启职业发展的机会。
值得记住的是,这两种工具可以很好地协同工作,您可能会发现有些任务最好留在 Excel 中,而其他任务将受益于 Python 提供的强大功能、灵活性和透明性。
让我们先熟悉一下我们将在本教程中使用的数据。我们将使用一家有销售人员的公司的虚构数据。下面是我们的数据在 Excel 中的样子:

我们的数据被保存为一个名为的 CSV 文件。为了在 pandas 中导入我们的数据,我们需要从导入 pandas 库本身开始。
讯享网
上面的代码导入了熊猫,并将的别名赋予了语法。这听起来可能很复杂,但它实际上只是一种昵称——这意味着将来我们可以只使用来指代,这样我们就不必每次都打出完整的单词。
为了读取我们的文件,我们使用:
我们将的结果赋给一个名为的变量,我们将用它来引用我们的数据。我们还将变量名放在代码的最后一行,它将数据打印在一个格式良好的表中。
很快,我们可以注意到 pandas 表示数据的方式与我们在 Excel 中看到的有一些不同:
- 在 pandas 中,行号从 0 开始,而在 Excel 中是从 1 开始。
- pandas 中的列名取自数据,而 Excel 中的列用字母标记。
- 在原始数据中有缺失值的地方,pandas 用占位符来表示该值缺失,或者用 null 。
- 销售数据的每个值都添加了一个小数点,因为 pandas 将包含 null ( )值的数值存储为称为 float 的数值类型(这对我们没有任何影响,但我们只想解释为什么会这样)。
在我们学习我们的第一个 pandas 操作之前,我们将快速了解一下我们的数据是如何存储的。
让我们使用函数来看看我们的变量的类型:
讯享网
这个输出告诉我们,我们的变量是一个数据帧对象,这是 pandas 中的一个特定类型的对象。在 pandas 中,大多数时候当我们想要修改数据帧时,我们会使用一种称为数据帧方法的特殊语法,它允许我们访问与数据帧对象相关的特定功能。当我们完成我们在熊猫中的第一个任务时,我们将看到一个这样的例子!
让我们学习如何在 Excel 和 Python 中对数据进行排序。目前,我们的数据还没有分类。在 Excel 中,如果我们想按列对数据进行排序,我们应该:
- 选择我们的数据。
- 点击工具栏上的“排序”按钮。
- 在打开的对话框中选择“开始日期”。

在熊猫身上,我们使用方法。我们刚才简要地提到了方法。为了使用它们,我们必须用我们想要应用该方法的数据帧的名称替换——在本例中是。如果您在 Python 中使用过列表,您将会熟悉来自方法的这种模式。
我们向该方法提供列名,告诉它根据哪一列进行排序:
讯享网
我们的数据框架中的值已经用一行简单的熊猫代码进行了排序!
我们数据的最后三列包含一年前三个月的销售额,称为第一季度。我们的下一个任务是在 Excel 和 Python 中对这些值求和。
让我们先来看看我们是如何在 Excel 中实现这一点的:
- 在单元格中输入新的列名。
- 在像元 H2 中,使用公式并使用坐标指定像元的范围。
- 将公式向下拖动到所有行。

在 pandas 中,当我们执行一个操作时,它会立刻自动应用到每一行。我们将通过使用列表中的名称来选择三列:
接下来,我们将使用方法并指定,这告诉 pandas 我们想要对行求和而不是对列求和。我们将通过在括号内提供新的列名来指定它:
讯享网
在熊猫身上,我们使用的“配方”没有被储存。相反,结果值被直接添加到我们的数据帧中。如果我们想对新列中的值进行调整,我们需要编写新的代码来完成。
在我们的电子表格中,我们也有一个小的数据表,关于谁管理每个团队:

让我们看看如何在 Excel 和 Python 中将这些数据连接到一个列中。在 Excel 中,我们:
- 首先将列名添加到单元格中。
- 在单元格中使用公式,指定:
- 从单元格(部门)中查找值
- 在管理器数据的选择中,我们使用坐标来指定
- 我们希望从该数据的第二列中选择值。
- 单击并向下拖动公式至所有单元格。

要在 pandas 中处理这些数据,首先我们需要从第二个 CSV 导入它,:
为了使用 pandas 将数据连接到,我们将使用函数。我们按顺序提供以下论据:
- :我们要合并的第一个或左侧数据帧的名称
- :我们要合并的第二个或右侧数据帧的名称
- :我们想要用来连接数据的方法。连接指定无论如何,我们都要保留左边(第一个)数据帧中的所有行。
- :我们将要连接的两个数据帧中的列名。
讯享网
如果一开始这看起来有点混乱,那没关系。Python 中连接数据的模型不同于 Excel 中使用的模型,但它也更强大。请注意,在 Python 中,我们使用清晰的语法和列名来指定如何连接数据。
如果我们看一下列,我们可以看到并非所有的员工都还在公司——那些价值缺失的员工仍在工作,但其余的已经离开了。我们的下一个任务是创建一个列,告诉我们每个销售人员是否是当前雇员。我们将在 Excel 和 Python 中执行此操作。
从 Excel 开始,要添加该列,我们:
- 向单元格添加新的列名。
- 使用公式检查单元格(结束日期)是否为空,如果是,用填充,否则用。
- 将公式拖到下面的单元格中。

在 pandas 中,我们使用函数来检查列中的空值,并将结果分配给一个新列:
Excel 最强大的功能之一是数据透视表,它使用聚合来简化数据分析。我们将看看 Excel 和 Python 中两种不同的数据透视表应用程序。
我们将从 Excel 中的数据透视表开始,它计算每个部门的员工人数:

这个操作——计算一个值在一列中出现的次数——非常常见,以至于在 pandas 中它有自己的语法:。
series 类型对本教程来说是新的,但它与我们已经了解过的 DataFrame 非常相似。系列只是单个行或列的熊猫代表。
让我们用熊猫法来计算每个部门的雇员人数:
讯享网
第二个数据透视表示例也按部门进行聚合,但计算的是 Q1 的平均销售额:

为了在熊猫中计算这个,我们将使用方法。我们需要指定一些参数:
- :聚合所依据的列。
- :我们要使用其值的列。
- :我们想要使用的聚合函数,在这里是 average。
讯享网
在本教程中,我们学习了以下 Excel 功能的 Python 等价物:
- 分类数据
- 数据透视表
对于我们看到的每个例子,pandas 语法的复杂性与您在 Excel 中使用的公式或菜单选项相似。但是 Python 提供了一些优势,比如更快地处理大型数据集,更多的定制和复杂性,以及更透明的错误检查和审计(因为您所做的一切都清楚地显示在代码中,而不是隐藏在单元格中)。
精通 Excel 的人完全有能力跨越到使用 Python。从长远来看,将 Python 技能添加到您的技能集将使您成为更快、更强大的分析师,并且您将发现新的工作流,这些工作流利用 Excel 和 Python 进行比单独使用 Excel 更高效、更强大的数据分析。
如果你想学习如何用 Python 分析数据,我们的 Python path 中的 Data Analyst 旨在教你你需要知道的一切,即使你以前从未编写过代码。在开始学习我们在本教程中使用的 pandas 库之前,您将从两门教授 Python 基础知识的课程开始。
原文:https://www.dataquest.io/blog/exploring-womens-army-auxiliary-corps-data/
March 28, 2018
今天我想去参观一下作为数据的目录。英国国家档案馆的发现目录是这项活动的一个极好的资源,因为 a)它有许多记录,在目录中有“项目”或“件”级别的文件描述,包含可以量化和可视化的非常结构化的信息(如日期、地点、职业);b)更重要的是,它具有导出功能,允许您下载多达 10,000 条 CSV 格式的记录。(它还为那些具有一些编程技能的人提供了完整的 API,但 10,000 条记录会让你走得很远,而且你经常可以将较大的集合分成块,例如使用日期过滤器)。
您需要非常小心地使用 Discovery 高级搜索来获得正确的搜索结果集(它可以指定特定的记录、日期、目录级别等)—这里有一些有用的提示。然后你很可能需要使用像 OpenRefine 这样的工具将信息分离到单独的数据字段中,并清理/规范化日期等(查看本教程)。
我在 TNA 的在线指南上闲逛,寻找一些我一无所知的关于女性的记录,而女子陆军辅助军团 1917-20 ( WO 398 引起了我的注意:
【1917 年至 1920 年间加入女子陆军辅助队(WAAC)的 7,000 多名妇女的服役记录 QMAAC 于 1918 年 4 月成为 QMAAC,并于 1921 年 9 月解散
在 7000 张唱片中,这听起来像是一个很好的大小,完全在下载限制之内。看一看目录条目显示,除了女性的名字之外,它还有一些不错的信息(不像一个类似的更大的系列,WO399,它只有转录的名字)。给我几个小时的时间提取和清理数据,我能学到什么?
| 为…记录 | 艾伦,莎拉·安·尼·菲利普斯 |
| 出生地: | 北威尔士高街·塞夫恩·莫尔 |
| 出生日期: | 1894 年 8 月 22 日 |
首先,就可用数据而言,这实际上提供了什么?出生日期是一个显而易见的日期:仔细观察会发现它的格式是一致的,有完整的日期(大多数);几乎每种情况下都至少提供一年,这可以很容易地提取到标准的出生年份字段中。出生地也有潜力,但是更多样,需要更多的清理,所以我还没用那个做什么;但这可能会成为一个有趣的绘图练习。或许不太明显的是,“ nee Phillips ”暗示着——如果你能有把握地假设女性总是给出这些信息的话!–还可以推断出一个女人是否结过婚。给定出生日期和名字,您还可以做的另一件好事是寻找婴儿命名的模式(尽管这可能真的需要更大的数据集)。
两个警告,一个主要的和一个次要的:
- 在线指南清楚地表明,这 7000 条记录只是原始收藏(57000 条记录)的一小部分,因为许多记录在二战的一次空袭中被毁。所以可能不能代表被招募的女性。
- 数据中的错误——即使是质量最好的材料,你也必须时刻注意。在这种情况下,有几个明显的出生日期转录错误。我们可以 100%确定 1822 年、1917-18 年和 1988 年的出生年份只是错了。但实际上更成问题的是看起来不太可能但并非完全不可能的异常值:1844 年?1903?幸运的是,它们只占极少数的记录。还有 278 个数字被记录为 18880 或 18930:我得出结论,这些实际上是年份日期,不知何故被添加了一个额外的零,并相应地进行了更正。
可视化通常对突出显示数据中的错误和问题特别有用。但是,研究人员必须决定如何处理这种异常(以及它们是否严重到足以使整个数据集不可靠而不值得使用)。
我最初希望记录日期将代表女性参军的具体日期,但结果是整个系列只有一个覆盖日期。因为它只涵盖了 4 年,这不是一个真正的问题;相反,我只是计算出了他们在 1918 年的年龄(假设战争结束后不会再有新兵招募),并过滤掉了六个可能出生于 1860 年之前或 1903 年之后的人。
所以我今天学到的是,天哪,他们太年轻了。

作为可视化,表格可能不如图表引人注目,但它们具有在相对较小的空间内呈现大量精确信息的优点;这篇文章底部的表格显示,在 1918 年,超过 60%的女性年龄在 25 岁或以下,大约 90%在 30 岁以下。他们中很少有人年龄足够大,能够利用战争结束时妇女投票权的有限扩大。
一点背景阅读证实了这一点——根据露西·诺克斯在英国和爱尔兰妇女战争动员上的说法,“WAAC 的大部分新兵是年轻的工人阶级妇女”。如果我们可以合理地假设关于婚前姓氏的信息是一个完整的记录,或者接近完整的记录,那么绝大多数女性也是未婚的——总体而言接近 95%。我怀疑很少有已婚女性会自愿参加这种类型的服务(这可能会把她们带到海外并接近战斗),因此可以预计大多数人会很年轻——平均而言,很可能比男性士兵年轻。你还可以看到,25 岁以上的女性中,已婚/曾经结过婚的比例要高得多——但与你可能在总人口中预期的比例相比,这一比例看起来仍然非常低(我想知道其中是否有相当多的人是寡妇)。

当我从诺克斯那里得知他们的年轻(毫无疑问,是阶级)导致了一些负面看法时,我并不感到惊讶:
然而,在公众心目中,她们有时被视为寻求刺激的人,被冒险和浪漫的欲望所吸引,招募入伍时担心女性会找到与士兵发生性关系的机会。政府对这些谣言如此担忧,以至于成立了一个调查委员会,其中包括显示 WAAC 未婚成员怀孕数量低于未婚平民的数字……

Queen Mary’s Army Auxiliary Corps (Art.IWM PST 13167): “The GIRL behind the man behind the gun” (!) © IWM
Data on GitHub

编者按:这最初是发布在早期现代笔记上,作为我们关注女性历史月的一部分,已经被 perlesson 转载。作者莎伦·霍华德在谢菲尔德大学担任数字历史项目的项目经理。
原文:https://www.dataquest.io/blog/filtering-pandas-dataframes/
February 24, 2022
Pandas 库是一个快速、强大且易于使用的数据处理工具。它通过提供改变游戏规则的功能,帮助我们清理、探索、分析和可视化数据。将数据作为 Pandas DataFrame 允许我们以各种方式分割数据,并毫不费力地过滤数据帧的行。本教程将介绍使用不同的过滤技术从数据帧中获取数据的主要方法。
在讨论不同的数据帧过滤技术之前,让我们先回顾一下数据帧。从技术上讲,DataFrame 建立在 Pandas 系列对象的基础上,系列是索引数据的一维数组。直观上,数据框架在许多方面类似于电子表格;它可以有多个包含不同数据类型的列和标有行索引的行。
首先,让我们使用下面的代码片段创建一个包含公司员工个人详细信息的虚拟数据帧:
讯享网
Pandas 字符串值的数据类型是对象,这就是为什么像 EmployeeName 或 Department 这样包含字符串的列的数据类型是对象。数据帧的每一列都有特定的数据类型;换句话说,数据帧的列不共享相同的数据类型。
另一个有用的 DataFrame 属性是,它返回一个列表数组,每个列表代表 DataFrame 的一行。
讯享网
如果您想知道数据帧的行数和列数,您可以如下使用属性:
讯享网
上面的元组分别表示行数和列数。
讯享网
例如,让我们抓住数据帧的部门列。
讯享网
运行上面的语句将返回包含部门列数据的序列。
此外,我们可以通过传递列名列表来选择多个列,如下所示:
运行上面的语句给我们一个数据帧,它是原始数据帧的子集。
和方法
我们可以使用切片技术从数据帧中提取特定的行。分割数据帧并选择特定列的**方式是使用和方法。这两种方法分别使用基于标签或基于整数的索引创建数据帧的子集。
讯享网
两种方法中的第一个位置指定行索引器,第二个位置指定列索引器,用逗号分隔。
在我们想练习使用和方法之前,让我们将 EmployeeName 列设置为 DataFrame 的索引。这样做不是必需的,但有助于我们讨论这些方法的所有功能。为此,使用方法使 EmployeeName 列成为 DataFrame 的索引:
现在,我们有了基于标签的索引,而不是基于整数的索引,这使得尝试用于切片和切割数据帧的和方法的所有功能更加容易。
注
方法是基于标签的,所以您必须根据它们的标签来指定行和列。另一方面,方法是基于整数索引的,所以您必须根据它们的整数索引来选择行和列。
以下语句实际上返回相同的结果:
讯享网
在上面的代码中,方法获得一个雇员姓名列表作为行标签,并返回一个包含与这两个雇员相关的行的 DataFrame。
方法做同样的事情,但是它不是获取带标签的索引,而是获取行的整数索引。
现在,让我们使用和方法提取一个包含前三名雇员的姓名、部门和性别值的子数据帧:
运行上述语句会返回相同的结果,如下所示:
讯享网
我们也可以对列进行切片。下面的语句返回数据帧中每隔一行的和列:
讯享网
我们在上面的代码中对数据帧的行和列执行切片。语法类似于 Python 中的列表切片。我们需要指定开始索引、停止索引和步长。
注意,在使用方法的带标签切片中,开始和停止标签都包括在内。然而,在使用方法的切片中,停止索引被排除。
在 Pandas 中过滤数据帧
到目前为止,我们已经学会了如何分割数据帧,但是我们如何获取符合特定标准的数据呢?在 Pandas 中,使用布尔掩码是过滤数据帧的常用方法。首先让我们看看什么是布尔掩码:
讯享网
通过运行上面的代码,我们可以看到列中的哪些条目大于 2015。布尔值表示是否满足条件。
现在,我们可以使用布尔掩码来获取包含 2015 年后雇佣的
员工的数据帧子集:
讯享网
我们还可以使用方法过滤行并返回某些列,如下所示:
我们能够使用逻辑运算符将两个或多个标准结合起来。让我们列出那些在数据科学团队工作的男性员工:
讯享网
如果我们想让所有员工身高在 170 cm 到 190 cm 之间怎么办?
讯享网
为了过滤数据帧,我们可以使用正则表达式来搜索模式,而不是精确的内容。以下示例显示了如何使用正则表达式来获取那些姓氏以“tt”或“th”结尾的雇员:
在本教程中,我们讨论了对数据帧进行切片和切块以及使用特定标准过滤行的不同方式。我们讨论了如何通过选择列、对行进行切片以及基于条件、方法或正则表达式进行过滤来获取数据子集。
原文:https://www.dataquest.io/blog/five-reasons-for-historians-to-learn-r/
April 17, 2018In which I do some cheerleading for the R Project for Statistical Computing.
通常,在无休止的“学者是否应该学习编码”的争论中,对于新来者来说,一旦你投入了大量的时间去学习它,你并不清楚你实际上可以用这些代码做什么。复制粘贴在线教程不会让事情变得更清楚。你是如何从“你好世界!”你研究的实际应用?但是 R 都是关于分析和展示数据的,没有多少历史学家迟早会不处理某种数据。如果您已经使用
电子表格、SPSS 或某种数据库,如果你曾经在论文中展示过表格或图表,你几乎肯定会从学习中有所收获,即使是少量的 R(并且可能会有 R 包,使其易于与你当前的工具一起使用)。r 是灵活的:它可以用于传统的表格统计数据,也可以用于语言语料库和其他文本数据集。你可以用它来处理重量级的数字、文本挖掘、项目开始时的探索性可视化,以及演示和出版中的壮观场景——各种各样的人文数据都使用。(我真的真的真的很想在这篇博文中找到美丽 viz 的应用。)
我知道有些人喜欢命令行工具。但是一个好的图形用户界面对于新手和我们这些实际上并不期待启动终端的人来说是非常重要的。安装 R 本身后,
RStudio 是接下来要下载的东西(免费)。这是一个合适的工作平台,包括代码编辑器、控制台、R 包管理器、可视化工具、预览器等等。如果你已经在使用 Markdown(也许即使你还没有),你会爱上 RMarkdown 和 R 笔记本。(关于另一个与 GUI 相关的主题,请参见: GitHub 桌面。不客气)
我的一个定期咆哮是,历史学家在担心编程代码之前,需要理解数据和数据建模(即使他们不认为他们与“数据”打交道)。有了 R,你可以同时了解两者。这
Tidyverse 被描述为“为数据科学设计的 R 包的固执己见的集合”,它们“共享一个底层哲学”;创建和使用整齐数据的工具。
这
编程历史学家有几个 R 教程,从非常基础的到更高级的技术。目前我认为有四个:
- r 表格数据基础
- R 中的数据争论和管理
- R 中的基本文本处理
- 历史研究与 R 的对应分析
除了这些简短的教程,Lincoln Mullen 还开发了一个免费的在线教材,
计算历史方法,“如何识别来源和框架历史问题,然后通过计算方法回答它们”,使用 r。另请参见 Scott Weingart 的资源列表,用于教自己为 DH 编写代码。
我已经写完了最后两篇
会议 论文完全在 r 中。这意味着一切都是纯文本,我可以轻松地在网上发布我使用的所有数据、代码和可视化。我把它们放在 Github 上,但也有其他选择,比如 RPubs (来自 RStudio 的开发者,从 RStudio 直接发送东西到 RPubs 真的很容易)。编者按:这最初是发布在早期现代笔记上,现在已经用 perlesson 重新发布了。作者莎伦·霍华德在谢菲尔德大学担任数字历史项目的项目经理。 想学 R?我们的基础课程将让你在不知不觉中挖掘数据。
原文:https://www.dataquest.io/blog/fixing-education/
February 8, 2018
公共教育,至少在美国,只让你接触一种学习方式——自上而下的等级制度和作业。虽然有些人在这种环境中茁壮成长,但我不是其中之一。大学毕业后,我带着 2.1 的 GPA,没有真本事,不知道下一步该怎么做,被扔进了这个世界。我并不孤单。
由于这个系统对我不起作用,我认为我不喜欢学习,像数学和物理这样“更难”的科目不适合我。我从一个职业跳到另一个职业——UPS 卸货员、百事可乐仓库经理、美国外交官——才意识到我可以按照自己的方式学习我想学的东西。

我已经详细描述了如何 其他地方,但对我来说,故事最有趣的部分不是我如何学习,甚至不是结果——而是我如何从枯燥的学习变成快乐的学习。关键部分是探索的自由,以及能够解决有趣的问题(例如预测股票市场)。
在这篇文章中,我分享了我认为我们需要的教育变革。我在这里的观点并不适用于每个人,因为教育不是放之四海而皆准的,但我确实相信它们对许多人来说是正确的。让我们开始吧。
如何激励学生并给予他们探索的自由,这个核心问题在教育界还没有得到很好的解决(尽管这正在慢慢地改变 T2)。即使在线教育可以进行更多的尝试,但仍然或多或少地局限于内容交付模式,创新围绕着内容交付模式(视频、交互式代码等)。).
为了鼓励动机,你必须允许学生选择他们学什么,以及他们如何学。真正想学习的人可以解决最枯燥的数学课本,并理解其中的概念。然而,一个没有动机的学生可能会因为一开始被迫阅读这本书、这本书的大小或任何其他负面因素而感到厌烦。
当我两年前开始 Dataquest 时,我们几乎完全是关于内容交付的——我们有交互式数据科学教程,要求学生编写代码来解决问题。随着时间的推移,我们已经发展到通过在浏览器中构建更多的开放式项目来帮助学生应用他们的知识,然后让他们进行评审。随着学生能力的提升,学习变得越来越不基于内容,而更多的是基于项目。

这种学习方式让你变得更加独立。当您编写第一个 Javascript 应用程序时,您可能需要先学习编程概念和其他基础知识,这需要大量的介绍性内容。然而,一旦你写了 20 个应用程序,并且你正在写另一个使用服务工作者的应用程序,一个你还没有听说过的概念,你可能需要文档和一些来自同行的反馈。随着你获得技能,不仅你需要多少帮助会改变,你需要的帮助类型也会改变。
在“真实世界”的工作中,你基本上只是创建一系列的项目。每个项目都有一定的时间范围,并最终根据其质量进行评判。当您构建项目时,您会查阅许多资源来了解您需要的所有概念。因为这就是真实世界的工作,所以学习使用项目也是有意义的。你的学习方式和现实世界中的做事方式之间的差距越大,转变就越困难。
创建项目也很有动力。想想我之前关于预测股票市场的例子——我就是这样学习统计学的。我发现了一些我感兴趣的东西,并逆向学习完成这个项目所需要的东西。
我相信理想的在线学习环境是相似的——你能够学习一些基础知识,选择你感兴趣的项目,并且只获得你需要的帮助来完成这些项目。这种帮助可以是来自导师的反馈、文档链接、内容或其他任何东西。这种学习永远不会结束——你可以继续处理不同的兴趣领域来获得技能。
不幸的是,建立这种学习方式有几个挑战。其中最重要的是教育没有灵丹妙药。例如,如果你从事乘车共享,你可以制作一个连接乘客和司机的应用程序,筹集大量资金,并向 hypergrowth 问好。
然而,在教育领域,学生有如此多不同的目标和偏好的学习方法,以至于开发一个新产品要花很多时间。你必须编写和修改内容,设计一个支持这些内容的平台,了解你的学生和他们是如何学习的,然后在我前面描述的所有其他帮助方法上再加一层。最重要的是,你必须能够有效地向以结果为导向的学生推销你所做的事情。很明显,大多数最大的教育科技公司(Pluralsight、Lynda、Coursera、Udemy)的教学方式基本相同,这与面授课程的教学方式非常相似——结构化的课程,由讲师向你讲述。
构建基于项目的学习的其他挑战包括:
- 如何帮助学生探索他们感兴趣的东西
- 如何判断学生在什么时候需要什么帮助
- 设计吸引人且有效的项目
- 弄清楚如何将学生与项目匹配到合适的技能水平
诚然,解决这个问题令人生畏,但影响将是巨大的。
真正的终身学习可以确保没有人拥有错误的技能,或者陷入自己不喜欢的职业。能够激励传统体制不兼容的学生也可以帮助世界上数百万在毕业后没有太多机会的人。这是一个关键问题,尤其是当学费上涨只会加剧教育机会不平等的问题时。
尽管存在挑战,但我相信在未来几年里,我们有很好的机会来建立更吸引人的在线学习体验。在线教育仍然很新(MOOC 的年份是 2013 年),非传统证书正变得越来越被接受(尤其是在科技领域),互联网接入正在迅速增加。
迟早,在线教育将提供比面对面教育更好的体验——问题只是什么时候。
如果你对这篇文章有任何想法,或者你对教育有强烈的意见,我很乐意和你聊天(尤其是如果你不同意的话)。在 【邮件保护】 给我发邮件!
原文:https://www.dataquest.io/blog/for-loop-in-r/
June 13, 2022
for 循环是 R 编程语言中主要的控制流结构之一。那是什么意思,你如何使用它?
在本教程中,我们将讨论 R 中的 for 循环是什么,它有什么语法,什么时候可以应用,如何在不同的数据结构上使用它,如何嵌套几个 for 循环,以及如何调节 for 循环的执行。
for 循环是 R 编程语言的主要控制流结构之一。它用于迭代对象集合,如向量、列表、矩阵或数据帧,并对给定数据结构的每一项应用相同的操作集。我们使用 for 循环来保持代码的整洁,避免代码块不必要的重复。
R 中 for 循环的基本语法如下:
讯享网
这里,序列是 for 循环迭代的对象(例如向量)的集合,变量是该集合在每次迭代中的一项,循环体中的表达式是为每一项计算的一组运算。
从上面的语法来看,关键字和是强制的,括号也是。其他元素,如花括号、缩进、将表达式和结束花括号放在新行上、for 循环头和循环体之间的空白,不是强制的,但强烈建议使用。推荐使用它们的目的是为了突出 for 循环的主要部分,从而提高代码的可读性并便于调试(如果需要的话)。
除非使用了语句,否则 for 循环会在对象集合的最后一项之后停止(我们将在本教程的后面考虑该语句)。
让我们看看 R 中的 for 循环如何用于遍历各种类型的对象集合。特别地,让我们考虑一个向量、一个列表和一个矩阵。
对向量使用 For 循环
从一个非常简单的例子开始,让我们打印从 1 到 5 的所有数字。为此,我们将采用由操作符()创建的相应向量,并使用函数作为表达式:
讯享网
在现实世界中,我们可能希望使用更有意义的变量名,而不是(例如、等)。).
如果我们需要将每个值打印为一个字符,给出更多的上下文,我们可以将函数添加到表达式中:
讯享网
通常,我们需要评估 for 循环体中的条件表达式,并基于此输出相应的结果:
讯享网
使用易于理解且一致的语法,注意缩进,并将循环体的每个部分放在新的一行上,我们清楚地看到,对于第 1 个月和第 2 个月(即小于 3 个月),for 循环打印“Winter”和该月的数字。对于其他月份,For 循环输出“Spring”和月份号。通过下面这段代码,我们有效地获得了相同的结果:
讯享网
在第二种情况下,代码看起来更难掌握。这证实了使用正确的语法,包括非强制元素,对于提高代码可读性是非常重要的。
我们可以通过将每次迭代的结果附加到一个最初为空的向量,将 for 循环的输出存储在一个新的向量中,如下例所示:
- Twenty
- Seventy
- Forty
- Ninety
- Eighty
上面,我们将数值向量的每一项乘以 10,并将每次迭代的值加到。
for 循环也适用于字符向量:
讯享网
在列表中使用 For 循环
让我们尝试在列表上应用 for 循环。
首先,让我们创建一个混合数据类型和结构的列表:
讯享网
- “猫”
- 真实的
讯享网
我们可以打印列表中每个项目的值:
讯享网
我们还可以打印列表中每个项目的长度:
讯享网
现在,让我们基于创建一个新列表,初始列表的每一项都复制两次:
讯享网
my_list_3 <- list()
for(i in 1:length(my_list)) {
if (length(my_list[[i]]) > 1) {
my_list_3[[i]] <- rep(my_list[[i]], 2)
} else {
my_list_3[[i]] <- ‘Too short item’
}
}
my_list_3
- ‘太短的项目’
讯享网
- ‘太短的项目’
my_matrix <- matrix(1:9, nrow=3, ncol=3)
for (row in 1:nrow(my_matrix)) {
for (col in 1:ncol(my_matrix)) {
print(paste(‘Row’, row, ‘col’, col, ‘value’, my_matrix[row, col]))
}
}
讯享网
[1] “Row 1 col 1 value 1”
[1] “Row 1 col 2 value 4”
[1] “Row 1 col 3 value 7”
[1] “Row 2 col 1 value 2”
[1] “Row 2 col 2 value 5”
[1] “Row 2 col 3 value 8”
[1] “Row 3 col 1 value 3”
[1] “Row 3 col 2 value 6”
[1] “Row 3 col 3 value 9”
for(i in 1:dim(my_matrix)[1]) {
for(j in 1:dim(my_matrix)[2]) {
my_matrix[i, j] = i + j
}
}
my_matrix
讯享网
for (x in qualities) {
for (y in animals) {
print(paste(x, y))
}
}
[1] “funny koala”
[1] “funny cat”
[1] “funny dog”
[1] “funny panda”
[1] “cute koala”
[1] “cute cat”
[1] “cute dog”
[1] “cute panda”
[1] “friendly koala”
[1] “friendly cat”
[1] “friendly dog”
[1] “friendly panda”
讯享网
super_sleepers <- data.frame(rating=1:4,
animal=c(‘koala’, ‘hedgehog’, ‘sloth’, ‘panda’),
country=c(‘Australia’, ‘Italy’, ‘Peru’, ‘China’),
avg_sleep_hours=c(21, 18, 17, 10))
print(super_sleepers)
rating animal country avg_sleep_hours
1 1 koala Australia 21
2 2 hedgehog Italy 18
3 3 sloth Peru 17
4 4 panda China 10
讯享网
for (row in 1:nrow(super_sleepers)) {
for (col in 1:ncol(super_sleepers)) {
print(paste(‘Row’, row, ‘col’, col, ‘value’, super_sleepers[row, col]))
}
}
[1] “Row 1 col 1 value 1”
[1] “Row 1 col 2 value koala”
[1] “Row 1 col 3 value Australia”
[1] “Row 1 col 4 value 21”
[1] “Row 2 col 1 value 2”
[1] “Row 2 col 2 value hedgehog”
[1] “Row 2 col 3 value Italy”
[1] “Row 2 col 4 value 18”
[1] “Row 3 col 1 value 3”
[1] “Row 3 col 2 value sloth”
[1] “Row 3 col 3 value Peru”
[1] “Row 3 col 4 value 17”
[1] “Row 4 col 1 value 4”
[1] “Row 4 col 2 value panda”
[1] “Row 4 col 3 value China”
[1] “Row 4 col 4 value 10”
讯享网
animals <- c(‘koala’, ‘cat’, ‘dog’, ‘panda’)
for (animal in animals) {
if (nchar(animal) < 4) {
break
}
print(animal)
}
[1] “koala”
讯享网
animals <- c(‘koala’, ‘cat’, ‘dog’, ‘panda’)
for (animal in animals) {
if (nchar(animal) < 4) {
next
}
print(animal)
}
讯享网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/154901.html