《Python数据科学实践指南》——2.1节应当掌握的基础知识

简介:

本节书摘来自华章社区《Python数据科学实践指南》一书中的第2章,第2.1节应当掌握的基础知识,作者纪路,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.1 应当掌握的基础知识
本节会介绍一些学习Python前应当掌握的基础知识,这一部分内容在所有的编程语言学习中基本上都是类似的,Python当然也遵守这些通用的规则,熟悉这些内容的读者可以跳过这一节。
2.1.1 基础数据类型
首先,需要明确的是,在Python中,所有的元素都是“对象”。“对象”是计算机科学中的一个术语,本书以后的章节会对其进行介绍,现在读者只需要将对象等同于“东西”就好了。既然是一种东西,那么就要对其进行分类,所有对象都要归属于某个“类型”,比如猫属于动物,电视属于电器,床属于家具等。从这个比喻来看,对象是一个具体的事物,而类型则是一个抽象的分类,并且同一类型的东西总是有很多相似之处,比如动物需要吃东西,可以自由移动,或者趴在你的键盘上妨碍你打字(开玩笑的)。虽然本章并不打算介绍“面向对象”,但还是想强调一下“对象”是Python程序处理的核心事物,而且每个对象都有它所归属的类型,最终会由类型决定Python程序可以对这个对象做什么。
Python有如下5种基本的数据类型。
None:这个类型表示什么都没有,这是一个特殊的类型,并且也仅有None这一个对象。
int:表示整数的类型,比如1、2、3、4这样的数字就是int型,当然,负数–1、–2、
–3、–4等也都在int的范围之内,范围等同于数学定义中的整数。
float:代表浮点数,比如1.2,4.5或–72.1,当所要表达的数字过大或过小时可能会用科学计数法来表示,比如1.6E11代表1.6×1011这样的大数。而且1.0或–2.0这样的数也叫作浮点数,虽然它们的值与去掉小数点及后面的0之后的值看起来是相等的,但是它们是不同的类型,Python程序可以对它们做的事情也不一样。比如下面这一小段程序:

jilu:~:% python
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 == 2.0
True
>>> 2 is 2.0
False
>>> type(2)
<type 'int'>
>>> type(2.0)
<type 'float'>
>>> 

bool:表示布尔类型的值,可能有的读者听说过布尔值只有两个,非0即1,在Python中使用False代表0,True代表1,上面的一小段代码试图判断2与2.0之间值的大小时,Python程序的结果是True,而在判断2是不是2.0时返回的却是False。
str:代表字符串类型,比如“Hello World”就是一个str类型。严格来说,在Python 2中还有一个unicode类型几乎与str类型没有任何区别。并且str类型也不是原子类型,而是由多个字符组成的序列类型。实际上str类型并不是基础数据类型,可实际上几乎没有程序能够完全不使用字符串类型的对象(即使是第1章中的示例程序,也用到了字符串类型的对象,那个时候读者也许还不知道什么是对象,就已经知道“Hello World”是字符串了),所以这里将str划为基础数据类型。
现在,我们已经介绍了Python的5个基本类型,接下来就让我们对它们做一些事情。
2.1.2 变量和赋值
在Python中我们可以随意为对象起一个名字,甚至起好几个名字,比如下面的语句:

>>> USD_to_CNY = 6.4855
>>> dollar_rate = USD_to_CNY
>>> dollar_rate = USD_to_CNY = 6.4855

第一条语句用于将字面量为6.4855的浮点型对象赋值给USD_to_CNY变量;第二条语句是通过变量USD_to_CNY将6.4855传递给了另外一个变量dollar_rate;第三条语句则是前两条的合体。这里需要强调的是,在Python里所有的赋值操作都是起一个别名,对象还是最原始的对象,这种方式叫作引用传递。Python中有一个id()方法,可以将某个对象在Python内部的唯一编号打印出来,为了证明这一点,一起来看一下下面的代码及输出:

>>> id(6.4855)
4302308792
>>> dollar_rate = USD_to_CNY = 6.4855
>>> id(dollar_rate)
4302308792
>>> id(USD_to_CNY)
4302308792
>>> id(6.4855)
可以看到无论是原始的变量还是它的两个别名,它们的对象ID都是相同的。如果我们为一个变量重新赋值,那么与这个变量对应的对象ID就会改变,比如:
>>> dollar_rate = 5.5
>>> id(dollar_rate)
4302308816

虽然,变量仅仅是一个名字,但是想起一个好的名字并不容易。真正的程序员在工作中无时无刻不面临着如何给某个对象找一个简单直白的名字,如果起了一个有误导性质的名字,结果很可能是灾难性的。比如,一个粗心的程序员将美元汇率(USD)写成了欧元汇率(EUR),那么这家公司可能会因为给顾客兑换更多的人民币而破产。Python的书写规范(EPE8)中,详细地规定了该如何书写名称,本书仅做一些必要的约定:名称应该是能表达实际含义的名词,由字母、数字及下划线组成,但不能以数字开头。还要注意的是,不要使用Python的保留字,因为这些单词是程序得以顺利执行的基础,它们有一些特定的含义,以下是Python 2.7中的保留字:

and       del       from      not       while
as        elif      global    or        with
assert    else      if        pass      yield
break     except    import    print
class     exec      in        raise
continue  finally    is        return
def       for       lambda    try
关于赋值,最后还有一点需要说明,即Python支持多重赋值,如果读者有过C/C++编程的经验,可能对下面的语句不会陌生:
x = 1
y = 2
z = x
x = y
y = z
在比较有历史的编程语言里,要交换两个变量的值只能通过一个中间变量来实现,而在Python中可以方便地写成:
>>> x = 1
>>> y = 2
>>> x, y = y, x

在Python中这种赋值方式称为列解包,后这将会在讲解序列类型时再次提及序列解包。
2.1.3 操作符及表达式
Python中有一系列的操作符,操作符可用来连接两个对象的符号,比如“+”号操作符连接两个数字就可以组成一个表达式,而且表达式的值也是对象,下面列出了Python的全部操作符:
算术操作符: +、-、*、/、//、%
位操作符: <<、>>、&、|、^、~
比较操作符: <、>、<=、>=、==、!=
逻辑操作符: and、or、not
算术操作符:用来进行算术操作。值得注意的是,Python中的算术操作符是自动重载的,对于int类型的两个对象,“+”代表求和。而对于str类型的两个对象,“+”就会变成连接两个字符串,比如:

"abc" + "dfe"
abcdef

对于该符号,本章后面讲解字符串时会做进一步讲解。
位操作符:Python的位操作符是进行位运算的,比如将一个整数右移的计算“1234 >> 1”,因为本书并不会涉及位运算,感兴趣的读者可以自己找一些资料来学习。
比较操作符:这个操作符就很好理解了,不过值得注意的是,比较操作符也是经过重载的,在比较字符串的类型时,是按照字母的字典顺序进行比较的,比如“a”< “b”。含有比较操作符的表达式,其表达式的值是布尔型,比较条件成立时为True ,不成立时为False。
逻辑操作符:and表示操作符两侧的值(表达式的值或对象的值)全部等同于True时,结果就是True。or只需要操作符两侧的值有一个为True就为True 。not就如字面意思一样,会逆转Ture和False的值,比如not True的结果是False,反之亦然。
最后,需要注意的是,编程与数学计算一样,操作符是有优先级的,比如号就要优先于+运算,实际的处理办法也与数学中的相同,可以使用圆括号()来将想要优先运算的部分括起来。比如(1 + 2)3就会先计算加法再计算乘法。
2.1.4 文本编辑器
使用Python的交互式命令行是非常便捷的编程方式,但是当需要编写的程序比较多时,程序员应使用更好的工具来管理代码。为简便起见,本章暂时还不会介绍IDE(Integrated Development Environment,集成开发环境),刚入门编程的读者最好还是从普通的纯文本编辑器开始入手。
可能有不少读者常用的编辑文本的软件是Office World、Windows记事本,或者Mac上的pages、备忘录,又或者是跨平台的印象笔记等。这些软件可以叫作文本编辑器,但是却不能叫作纯文本编辑器。因为这些软件为了方便排版,除了实际显示的文本之外,还有很多特殊的隐藏字符用来表示格式。任何代码文件都应当以纯文本的方式来保存,所以这里推荐两款适用于编程的纯文本编辑器—Sublime Text 3和Notepad++。

  1. Sublime Text 3
    Sublime Text 3是首选,这是一款免费的、跨平台的纯文本编辑软件,在Mac OS X、Windows、Linux里都有对应的版本,图2-1是Sublime Text 3运行时的截图。


0d4e79f9c888fa42c8e9b1ee08fc49ec0578743a

从图2-1中可以看到,Python代码的不同部分被标注成了不同的颜色,这是因为我将文件保存成example.py的文件了。“.py”是Python程序的扩展名,正确的Python程序必须以.py结尾,这样编辑器和Python解释器才能够正确识别。

  1. Notepad++
    Notepad++是一款专门为Windows设计的纯文本编辑器,同样也是免费的,而且有一批忠实的用户在使用,有兴趣的读者可以去了解一下,图2-2是Notepad++的软件界面。

以上两个软件的功能很相似,都能够满足我们目前的需求,安装方式也与其他应用程序的安装方式一致,这里就不再赘述了。再提醒一次,使用Windows的用户一定不要使用Windows记事本打开Python程序文件,因为记事本会向纯文本文件每一行的末尾插入一个Windows特有的标记,平时看不见,但它会导致程序运行失败。
在安装编辑器之后,输入适当的Python代码,保存为以“.py”结尾的Python程序文件之后,就可以通过在命令行中输入“python+程序文件路径”的方式运行了,在Mac OS X中的截图如图2-3所示。


6a249c36a939d11c1fb5a130f8d24af0f9dbbd57

在Windows中的截图如图2-4所示。


9e01ab53dd8d38d5ddea7280c5c39ccc9adabdb5

通常,Python程序文件的头部会添加两行特殊的字符串,如代码清单2-1所示。
代码清单2-1:

example.py
# ! /usr/bin/python
# -*- coding: utf-8 -*-

x = 1
y = 2
x, y = y, x
print(x)
print(y)

其中第一行在Windows系统当中没有意义,这是专门给Python代码在Mac OS X或Linux上运行的用户使用的。第二行对于非英文用户是比较关键的,它说明了程序文件是以utf-8编码保存的,中文和其他非ASCII字符的文字需要以这种方式保存在Python程序中。另外由于Python shell只能输入ASCII字符,所以通过编写Python程序文件也可以实现对中文的处理,比如代码清单2-2。
代码清单2-2:

hello.py
# ! /usr/bin/python
# -*- coding: utf-8 -*-
print("你好,世界")
在Mac OS X终端上执行之后的结果是:
jilu:~:% python ~/Downloads/hello.py
你好,世界

Windows命令行执行的命令是“python C:UsersjiluDesktophello.py”,在本书以后的章节里,如果提到运行Python程序,则表示是在终端或命令行中使用python命令调用代码清单,我会直接给出代码清单和运行结果,而省略运行的步骤。
这里还有一些小技巧可以帮助读者快速地输入代码清单的存储路径,即无论在何种操作系统下,都可以通过鼠标拖曳代码清单的文件到命令行里,命令行中会自动打出该文件的路径,之后就只需要再补充python命令即可。

相关文章
|
1月前
|
机器学习/深度学习 数据可视化 数据处理
从基础到进阶:探索Python在数据科学中的应用
【10月更文挑战第18天】从基础到进阶:探索Python在数据科学中的应用
41 1
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
56 2
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
探索Python的奥秘:数据科学中的利器
本文将深入探讨Python编程语言在数据科学领域的强大应用。通过简洁易懂的语言,我们将解析Python的核心概念、流行库以及在实际项目中的应用,帮助您理解为何Python成为数据科学家的首选工具。
59 0
|
15天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
16天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据科学:从基础到实战
Python数据科学:从基础到实战
25 1
|
26天前
|
机器学习/深度学习 数据可视化 数据处理
Python在数据科学中的应用###
本文探讨了Python语言在数据科学领域的广泛应用及其重要性。通过分析Python的简洁语法、强大的库支持和跨平台特性,阐述了为何Python成为数据科学家的首选工具。文章还介绍了Python在数据处理、分析和可视化方面的具体应用实例,展示了其在提升工作效率和推动科学研究方面的巨大潜力。最后,讨论了未来Python在数据科学领域的发展趋势和挑战。 ###
|
29天前
|
机器学习/深度学习 分布式计算 数据可视化
Python在数据科学中的应用与挑战
本文探讨了Python编程语言在数据科学领域的广泛应用及其面临的主要挑战。Python因其简洁的语法、强大的库支持和活跃的社区,已成为数据科学家的首选工具。然而,随着数据量的激增和复杂性的增加,Python也面临着性能瓶颈、内存管理等问题。本文将通过具体案例分析,展示Python在数据处理、分析和可视化方面的优势,同时讨论如何克服其在大规模数据处理中的局限性,为读者提供实用的解决方案和优化建议。
|
28天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
28 1
|
1月前
|
JSON 数据可视化 API
玩转数据科学:Python实战分析天气预报变动趋势
【10月更文挑战第1天】随着气候变化对日常生活的影响日益显著,理解和预测天气模式变得越来越重要。本文将引导您如何使用Python来抓取和分析天气预报数据,从而揭示天气变化的趋势。我们将介绍从获取公开气象API的数据到清洗、处理以及可视化整个过程的技术方法。
198 2
|
2月前
|
机器学习/深度学习 数据可视化 TensorFlow
探索Python在数据科学中的应用
这篇文章深入探讨了Python编程语言在数据科学领域的强大应用。从数据处理、分析到可视化,再到机器学习和深度学习,Python因其丰富的库和框架而成为数据科学家的首选工具。文章不仅介绍了Python的基本语法和数据结构,还详细讨论了如何使用Pandas进行数据清洗和预处理,以及NumPy和SciPy在数值计算中的重要性。此外,文章还涵盖了使用Matplotlib和Seaborn进行数据可视化的技巧,以及Scikit-learn和TensorFlow在构建预测模型中的应用。通过综合运用这些工具,数据科学家能够更有效地分析大量复杂的数据集,从而洞察趋势、模式和关联性,支持决策制定和策略优化。
53 2
下一篇
无影云桌面