0
20
1109
False
False
None
False
0
讲义
视频
<style type="text/css">
</style>
<!--style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
#overflow: visible;
#padding: 8px;
}
div#notebook {
overflow: visible;
border-top: none;
}@media print {
div.cell {
display: block;
page-break-inside: avoid;
}
div.output_wrapper {
display: block;
page-break-inside: avoid;
}
div.output {
display: block;
page-break-inside: avoid;
}
}
</style-->
<!-- Custom stylesheet, it must be in the same directory as the html file -->
<!--link href="/static/codemirror/codemirror.css" rel="stylesheet"-->
<!--link rel="stylesheet" href="/static/css/custom.css"-->
<!-- Loading mathjax macro -->
<section>
<div tabindex="-1" id="notebook" class="border-box-sizing">
<div id="notebook-container">
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<div style="text-align:center">
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Python语言是一个数据分析师必备的编程语言,是数据分析师或数据科学家踏入数据科学领域最关键的第一步。本课程从数据分析角度出发,全面地介绍Python的基本概念与操作,包括内置对象类型列表、元组、字典等,还有函数、对象和类,以及异常处理和文件读写等知识。</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Python语言的诞生及发展">Python语言的诞生及发展<a class="anchor-link" href="#Python语言的诞生及发展">¶</a></h1><p>Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言,如今已成为绝大部分数据分析师的首选数据分析语言。Python不仅能胜任分析数据集、创建复杂的Web应用程序以及开发游戏等复杂工作,还能实现迪斯尼动画电影中的许多效果。</p>
<p>Python语言的名字来源于BBC的一档叫做“Monty Python's Flying Circus”的幽默短剧节目,与“Python”本身的含义“蟒蛇”毫无关系。Python是由Guido van Rossum(人称“龟叔”)于1989年在荷兰国家数学和计算机科学研究所设计出来的,Guido van Rossum开玩笑似地选择了“Python”这个名字。Guido van Rossum不仅是Python之父,他也在Python之后的发展方向上起到了“仁慈独裁者”的决定作用。</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p><img src="http://cookdata.cn/media/note_images/Guido_van_Rossum_OSCON_1536908707479_5d14.jpg" alt="png"></p>
<p><div align="center">Python发明者:Guido van Rossum</div>
<br></p>
<p>1996年,Van Rossum在Mark Lutz的书《Programming Python》的序言中谈到了Python的创造过程:</p>
<blockquote><p>6年前,在1989年12月,当时我正在寻找一个有意思的编程项目来打发圣诞节的周末时间。我的办公室将在周末关闭,而且我仅有一台电脑在家。所以我决定开发一种新的脚本解释程序,将其作为解释性语言ABC的一种继承,这种语言我认为会吸引Unix和C语言的发烧友。我决定用”Python“作为这个项目的名称,这个名称表达了我些微傲慢的情绪,并且我是Monty Python's Flying Circus的超级大粉丝。</p>
</blockquote>
<p>在课程的学习过程中,你将会遇到许多<strong>实战演练</strong>部分,这些实战演练基于本平台的MagicFrame的框架,它包含了一系列的练习题-选择题、填空题、建模题和排序题等。它的目的在于让我们及时巩固学习到的知识及自测。下面我们就来试一试吧!</p>
<p><br>
<br></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="为什么Python在数据科学领域如此火热?">为什么Python在数据科学领域如此火热?<a class="anchor-link" href="#为什么Python在数据科学领域如此火热?">¶</a></h1><p>编程语言的流行程度可以通过TIOBE INDEX(也称作“TIOBE排行榜”)得知,下面是截止到2018年9月,近十年流行的编程语言的TIOBE INDEX变化图:</p>
<p><div align="center">最流行的十种编程语言的TIOBE INDEX变化图 </div>
<br></p>
<p><img src="http://cookdata.cn/media/note_images/WechatIMG48_1537167875622_5d14.jpg" alt="png"></p>
<p>Python语言已经有20多年的历史,曾在2007年和2010年两度被TIOBE排行榜评为“年度编程语言”,现已成为了第三大流行编程语言(截至2018年9月),不过被刚刚挤下去的C++咬得很紧。</p>
<p><img src="http://cookdata.cn/media/note_images/WechatIMG49_1537167987004_5d14.jpg" alt="png"></p>
<p><img src="http://cookdata.cn/media/note_images/fig3_1536909232223_5d14.jpg" alt="png"></p>
<p><div align="center">Python语言的TIOBE INDEX变化图</div>
<br></p>
<p>值得一提的是,Python的设计哲学影响到了许多现在流行的编程语言,比如Julia、Ruby、Swift以及最有希望成为“TIOBE排行榜”2016年年度编程语言的Go。</p>
<p>另外在7月18日电气与电子工程师学会会刊IEEE SPECTRUM公布的<a href="http://spectrum.ieee.org/ns/IEEE_TPL_2017/index/2017/1/1/1/1/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/">最佳编程语言排行榜</a> 中,Python的综合排名已经排在了第一位。</p>
<p><img src="http://cookdata.cn/media/note_images/ieeerank_1536909263583_5d14.jpg" alt="png"></p>
<p><div align="center">IEEE SPECTRUM公布的编程语言综合排名</div>
<br></p>
<p>有趣的是,从indeed.com中的招聘广告的薪水统计发现:Python与Ruby并列排在了排行榜的第二位,C++紧随其后,这证明了企业界对Python编程使用者的需求量较大。</p>
<p><img src="http://cookdata.cn/media/note_images/salary_1536909283330_5d14.jpg" alt="png"></p>
<p><div align="center">indeed.com编程语言薪水排行榜</div>
<br></p>
<p>以上从官方排行榜的角度说明了Python如今的火热程度。私底下我相信大家也在不同场合听说过这一门编程语言,各大问答社区、知识社区里也有丰富的学习资料,Python开发者在各个代码分享平台也异常活跃,比如Github社区:</p>
<p><img src="http://cookdata.cn/media/note_images/githubrank_1536909301314_5d14.jpg" alt="png"></p>
<p><div align="center">2016年,Github上各个语言相关pull请求数量排行榜</div>
<br></p>
<p>Python基本已经奠定了其数据分析师首选编程语言的地位。那么,Python为什么会这么火呢?</p>
<p>为什么Python会这么火?火到甚至一些技术布道师也不断地在各个场合,向大家推荐使用Python进行数据分析或者大型项目开发,如机器学习建模、金融数据分析、Web开发、服务器和管理工具开发等工作。下面我们来说说其中的一些原因:</p>
<ol>
<li><p>易于学习和易于理解。实际上许多开发者并不把Python作为主要语言,但是因为它本身简化的语法及类自然语言的特点,部分开发者会选择Python作为他们的第二语言。</p>
</li>
<li><p>开源工具多,便于“交叉”。Python可以应用在多种开发工作中,并且有许多针对不同项目设计的现成框架以及开源工具,它拥有大量的文档、教程、问答等资料,并且开发者社区也相当的活跃,使用Python调用一些API接口“交叉”开发项目也非常方便。举个例子,比如我们可以使用MySQLdb包连接本地MySQL数据库提取数据并进行数据分析,使用sklearn或者tensorflow进行建模,使用基于Python的Django框架进行Web开发讲最终结果呈现在前端页面上,这一完整的“交叉”项目我们可以主要使用Python来开发。</p>
</li>
<li><p>可靠且高效。Python是跨平台的,几乎在任何环境下都可以使用和部署Python应用,无论使用什么平台,几乎都没有性能损失,它在任何地方都提供了友好的体验。</p>
</li>
<li><p>Python在人工智能领域的普及。Python之所以这么火,与大数据和云计算的火热现状关系密切,无论是数据获取、数据处理、建模分析还是数据的可视化,Python都提供了丰富的工具包,因此在人工智能领域,Python是最流行的数据分析语言之一。</p>
</li>
<li><p>深度学习等前沿技术使用基于Python的工具。在机器学习领域,深度学习是其中最火热的方向,深度学习算法霸占了各大计算机视觉竞赛如ImageNet的榜首,这些算法可以藉由Python工具包如tensorflow,theano,keras,pytorch等实现。</p>
</li>
<li><p>众多大企业使用Python做开发。有许多的大型网站都是用Python开发的,比如YouTube、Instagram和国内的豆瓣。还有Google、Yahoo等公司,甚至美国航天航空局(NASA)都大量地使用Python。我们正在使用的数据嗨客平台,也主要使用Python开发。</p>
</li>
</ol>
<p>以上这些原因不仅是Python火的原因,也是数据酷客课程大部分以Python作为实践语言的原因。
<br>
<br></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Python与Java、R的比较">Python与Java、R的比较<a class="anchor-link" href="#Python与Java、R的比较">¶</a></h1><p>在本部分,我们将Python与应用开发和数据分析两个领域中的传统主流编程语言Java和R进行比较。我们并不期望把语言比出一个高下之分来,而是在你面临一些具体的开发任务和数据分析任务时,给你一个使用Python的理由。</p>
<p>Python语言是一种解释型语言,其执行方式与编程型语言不同。</p>
<ul>
<li>解释型语言执行方式:源代码->解释器->输出</li>
<li>编程型语言执行方式:源代码->编译->目标代码->执行->输出</li>
</ul>
<p>Python中最常见的解释器是用C语言开发的,叫CPython。在命令行下运行python就是启动CPython解释器。PyPy是另一个Python解释器,它的目标是执行速度。PyPy对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。</p>
<p>编译型编程语言包括C、C++、GO、Swift、Object-C等,解释型编程语言包括JavaScript、Python、Ruby、PHP等,还有一类是混合型的编程语言,常见的有Java和C#。</p>
<p>Python与Java都有类似的面向对象的特性和语法。Java的语法相较于C++简单,但是与Python比起来依旧很繁琐,尤其是当你想完成一个小任务时。相比Java,Python提供了更加快速的开发环境。Java主要用于商业逻辑强的领域,如商城系统,金融,保险等传统数据库事务领域,通过类似ssh框架事务代码,对商业数据库,如oralce,db2,sql server等支持较好,软件工程理念较强,适合软件工程式的多人开发模式。Python主要用于web数据分析,科学计算,金融分析,信号分析,图像算法,数学计算,统计分析,算法建模,服务器运维,自动化操作,快速开发理念强,适合快速开发团队或个人敏捷模式。</p>
<p>我们重点来说说在数据科学领域,为什么我们要推荐选择Python进行数据分析而不是R语言?实际上,之前提到的Python语言的火热的原因已经充分说明了Python作为数据分析师首选语言的原因。R语言以统计推导为导向,一直都是经济或统计专业的老师授课的主要编程语言,但是由于R语言在数据分析领域之外有非常大的局限,所以在“交叉性”上逊色于Python。除此之外,目前基于Python的数据采集和机器学习等模块也较R语言成熟、功能更强大。</p>
<p>其实R与Python并不是完全孤立的,在R中可以同rPython包运行Python代码,从Python传递或获取数据,调用Python函数或者方法。同样,在Python中也可以使用RPy2包运行R代码,这提供了一个从Python到R的底层接口。</p>
<p>Python和R同为最受欢迎的数据分析编程语言,推荐大家阅读由《Python机器学习》一书作者,从生物领域转来的数据科学家Sebastian Raschka的文章:<a href="http://sebastianraschka.com/blog/2015/why-python.html">Python, Machine Learning, and Language Wars – A Highly Subjective Point of View</a>。在该文章中,Sebastian Raschka认为:“Python虽然不是每个问题的“最好的”解决方案,但是对于许多问题的解决和任务,如数据分析任务,Python可能是最通用、最有能力的全能者。”Python有丰富的数据处理、可视化、机器学习等库,例如pandas、seaborn、scikit-learn、numpy、scipy、pytorch、tensorflow和gensim等。</p>
<p>总而言之,虽然Python和R语言在面对数据分析任务时是勺子和筷子的关系,但是使用Python进行数据分析已经是大势所趋。我们不喜欢中庸,我们就推荐Python!
<br>
<br></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Python的优缺点">Python的优缺点<a class="anchor-link" href="#Python的优缺点">¶</a></h1><p>首先,我们来看看Python的优点。</p>
<p>Python语言的定位是优雅、简单、明确。这里有一个比较流行的段子可以说明Python的特点:完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python只要20行。如果需要追求运行速度和代码效率,比如操作系统或者硬件系统的编写,C语言当然是首选。但是通常在开发应用程序时,C程序与Python程序的运行时间上可能只是0.001秒与0.1秒的差别,这对于用户来说是无关痛痒的一件事情。并且对于数据分析这项工作而言,Python能够避免我们陷入代码海中,让我们能够更快速触碰到数据,并且挖掘出其中的价值,而不是在最底层的一些算法中茫然不知所措。当然,在遇到TB级的数据时,Python的运行速度弊端会暴露无遗,但是不要慌,我们可以求助于Hadoop或者Spark等一些分布式计算框架,当然这门课程还考虑不到这么复杂的情况。</p>
<p>“人生苦短,我用Python”(英文版是Life is short, use python!),这是印在龟叔T恤上的一段话。在设计Python语言时,Python开发者在面临多种选择时,通常会选择明确的、没有或者很少有歧义的语法,花哨、晦涩或者为“炫技”而生的语法则会遭到唾弃。这对于数据分析人员来说是一个绝对的福音,可以把关注的重点放在数据上而非其他。 Python是脚本语言,即写即运行,并且入门很简单,让数据分析师们摆脱了程序本身语法规则的泥潭,更快的进行数据分析开发。</p>
<p>下面我们就列举几个Python语言的主要优点:</p>
<ul>
<li>简单易学</li>
</ul>
<p>Python语言有多好学?老样子,咱们以输出“Hello World”为例,使用C语言的时候,你可能需要敲好几行的代码才能打出“Hello World”:</p>
<div class="highlight"><pre><span class="cp">#include<stdio.h></span>
<span class="n">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"Hello World"</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<p>而使用Python语言,你只需要以下所示的一行代码就可以完成同样的任务:</p>
<div class="highlight"><pre><span class="k">print</span> <span class="p">(</span><span class="s">"Hello World"</span><span class="p">)</span>
</pre></div>
<p>Python语言作为解释型语言,看上去总是简单易懂,好的Python代码读起来就跟读英语小作文一样畅快。一个优秀的Python程序员应该以向别人炫耀晦涩难懂、动辄几万行的代码为耻。</p>
<ul>
<li>强大的标准库</li>
</ul>
<p>虽说Python简单易学,但是如果每次遇到各种常用的功能都要自己写程序来实现的话,想必数据分析人员早就崩溃了。Python语言强大之处在于不仅为我们提供了常见的数字、字符串、字典、文件等常见的类型和函数,还提供了非常完善的基础代码库,覆盖了网络通信、文件处理、数据库接口、图形系统、XML处理等大量内容,被形象地称为“内置电池”(batteries included)。许多常用的、必备的功能不必从零编写,直接使用现成的即可。</p>
<p>所以Python使用者常被戏称”调包侠“,因为Python程序通常是以调包开始的,并且通过不断调包来解决实际问题。</p>
<ul>
<li>良好的可扩展性</li>
</ul>
<p>除了强大的内置库外,Python语言还有大量的第三方模块,这些模块是众多Python使用者的智慧结晶,覆盖了科学计算、Web开发、数据接口、图形系统等众多领域。当然,如果你开发的代码通过很好的封装,也可以作为第三方模块给别人使用。</p>
<ul>
<li>免费、开源</li>
</ul>
<p>“免费”对于所有使用者而言是皆大欢喜的一件事,并且开源是利于程序员们共同协作的。</p>
<p>下面咱们就通过导入Python格言来开始我们的调包侠之路。</p>
<p><br>
<br></p>
<p>其次我们看看Python有哪些缺点?</p>
<p>Python语言当然也不是完美的,它也有一些缺点,下面就列举其三:</p>
<ul>
<li>运行速度慢</li>
</ul>
<p>我们在之前也提到过,和C程序相比,Python语言的运行速度慢。因为Python是解释型语言,代码在执行的时候会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C语言是运行前直接编译成CPU能执行的机器码,所以非常快。</p>
<ul>
<li>加密难</li>
</ul>
<p>如果是发布C语言编写的程序,不需要发布源代码,只需要把编译后的机器码(即常见的.exe文件)发布出去。因为要从机器码反推出C代码是不可能的。但是在发布Python程序时,实际上就是发布源代码。所以,凡是编程型的语言,都没有这个问题,而对于解释型的语言,很不幸的是它们都必须把源码发出去。另外,Python程序的反编译难度也较C语言程序低。</p>
<p>这个缺点在靠网站和移动应用卖服务的模式为主的互联网时代已经显得微不足道了。因为这一种商业模式,并不需要把源码给别人。</p>
<ul>
<li>缩进规则</li>
</ul>
<p>Python的语法加入了非常严格的缩进规则,比如必须使用4个空格来表示每级缩进(在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等),Python支持使用Tab字符来表示缩进。又如if语句的下一行如果不向右缩进的话,编译时则会报错,如下所示:</p>
<div class="highlight"><pre><span class="k">if</span> <span class="bp">True</span><span class="p">:</span>
<span class="k">print</span> <span class="p">(</span><span class="s">"right"</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span class="n">File</span> <span class="s">"<ipython-input-1-81d5e346ded4>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">2</span>
<span class="k">print</span> <span class="p">(</span><span class="s">"right"</span><span class="p">)</span>
<span class="o">^</span>
<span class="ne">IndentationError</span><span class="p">:</span> <span class="n">expected</span> <span class="n">an</span> <span class="n">indented</span> <span class="n">block</span>
</pre></div>
<div class="highlight"><pre><span class="k">if</span> <span class="bp">True</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"right"</span>
</pre></div>
<div class="highlight"><pre><span class="n">right</span>
</pre></div>
<p>Python语言与其他大多数语言的最大区别是:一个模块的界限,完全是由每行的首字符在这一行的位置来决定的。这不同于C语言,C语言用一对花括号{ }来明确定出模块的边界。“缩进规则”其实是一把双刃剑。一方面,这增加了由于编程人员的不良编程习惯导致的无法编译情况产生的几率;但是另一方面,它使得代码可读性更强,这一点非常的重要,比起prel语言的“}}}}}}}”和C语言“漫天飞舞”的“{}”,Python代码是非常优雅的。</p>
<p>缩进的一个弊端是“复制-粘贴”功能失效了。当你重构代码时,粘贴过去的代码必须有“重新检查缩进是否正确”这一过程。这也是我们在数据分析工作中,最常见的问题。
<br>
<br></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="小结">小结<a class="anchor-link" href="#小结">¶</a></h1><p>在本章,我们主要对Python语言的历史进行了介绍,包括优缺点等,在正式学习Python语法之前对其有个全面的了解。</p>
<p>下面来看看我们是否已经熟悉Python这门编程语言了?</p>
</div>
</div>
</div>
</div>
</div>
</section>
Python概述_01_Python概述

0%
Python概述_01_Python概述
16:11
0
实战演练(5)
返回 >
1
2
3
4
5
实战演练
0
【选择题】
开始答题
结果输出
变量描述
模型评价
结果分布图
结果信息
237
实战演练
0
【选择题】
开始答题
结果输出
变量描述
模型评价
结果分布图
结果信息
242
实战演练
0
【选择题】
开始答题
结果输出
变量描述
模型评价
结果分布图
结果信息
244
实战演练
0
【选择题】
开始答题
结果输出
变量描述
模型评价
结果分布图
结果信息
246
实战演练
0
【填空题】
开始答题
结果输出
变量描述
模型评价
结果分布图
结果信息
2