数据科学:从基础到实战

Python

Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言,如今已成为绝大部分数据分析师的首选数据分析语言。其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。

版本

本教程所有代码采用 Python3.6 进行编写,可通过!python --version命令查看版本。

In [1]:
!python --version
Python 3.6.5 :: Anaconda, Inc.

语法

缩进

锁紧是表达代码间包含和层次关系的唯一手段,在 Python 中通过 4 个空格或 1 个 TAB 键来表示。

注释

注释是不被程序执行的辅助性说明信息。在 Python 中单注释分为单行和多行,单行注释以#开头,其后内容为注释;多行注释以'''开头和结尾,中间内容为注释。

In [2]:
# 这是一个单行注释

'''
这是一个多行注释
这是一个多行注释
'''

print('注释')
注释

变量

变量是用来保存和表示数据的占位符号。在 Python 中通过等号=用向变量赋值或修改值。 变量名是大小写字母、数字、下划线_和汉字等字符的组合,对大小写敏感,首字母不能是数字,也不能与保留字相同。

In [3]:
# 向变量x赋值为1
x = 1
print('x =',x)

# 修改变量x的赋值为2
x = 2
print('x =',x)
x = 1
x = 2

保留字

保留字是被编程语言内部定义并保留使用的标识符。在 Python 中有 33 个保留字,保留字是编程语言的基本单词,对大小写敏感。

and as assert break class continue
def elif else except finally for
from if import in is lambda
not or pass raise return try
while with yield del global nonlocal
True False None      

操作符

操作符是完成运算的一种符号体系

运算操作符

操作符 描述
x + y 加法运算
x - y 减法运算
x * y 乘法运算
x / y 除法运算
x // y 整除运算
x % y 取模(余数)运算
  • y
负数运算
x ** y 幂运算,y 为小数时为开方运算

赋值操作符

比较运算符

比较运算结果为 True 或 False。

操作符 描述
== 等于
!= 不等于
<> 不等于,与 != 类似
> 大与
< 小于
>+ 大于等于
<= 小于等于

位运算符

按位运算符是把数字看作二进制来进行计算的。

操作符 描述
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移动
>> 右移动

逻辑运算符

运算符 描述
and 布尔”与”
or 布尔”或”
not 布尔”非”

成员运算符

运算符 描述
in 变量在指定序列中找到值返回 True,否则返回 False
not in 变量在指定的序列中没有找到值返回 True,否则返回 False

身份运算符

身份运算符用于比较两个对象的存储单元。

运算符 描述
is 判断两个标识符是不是引用自一个对象
is not 判断两个标识符是不是引用自不同对象

数据类型

数据类型是供计算机程序理解的数据形式,在 Python 中数据类型被分为基本数据类型和复合数据类型。

  • 基本数据类型:也称为数值,包括整数、浮点数、复数、布尔数值和空值。
  • 复合数据类型:也称为序列,包括字符串、列表、元组、字典和集合。

基本数据类型

整数

Python 中的整数与数学中整数的概念一致,可正可负,没有取值范围限制,在 Python 中有 4 种表达形式。

表达形式 格式
十进制 -100,0,100
二进制 以0b或0B开头:0b01,-0B01
八进制 以0o或0O开头:0o17,-0O17
十六进制 以0x或0X开头:0x0f, -0X0f

整数虽然有 4 种表达形式,但输出格式都是十进制。

In [4]:
print("二进制数 0b01 的输出格式是:",0b01)
print("八进制数 0o17 的输出格式是:",0o17)
print("十六进制数 0x0f 的输出格式是:",0x0f)
二进制数 0b01 的输出格式是: 1
八进制数 0o17 的输出格式是: 15
十六进制数 0x0f 的输出格式是: 15

浮点数

Python 中的浮点数与数学中实数的概念一致,指带有小数点及小数的数字。浮点数取值范围和小数精度都存在限制,但常规计算可忽略。取值范围数量级约\(-10^{308}\)\(10^{308}\),精度数量级\(10^{16}\)

在 Python 中浮点数有两种表达形式:一种用小数点+数字形式表示;一种用科学计数法表示,使用字母e或E作为幂的符号,以10为基数,\(<a>e<b>\)表示\(a*10^b\)

In [5]:
print('浮点数 110e-3 值为:',110e-3)
print('浮点数 5.2E2 值为:',5.2E2)
浮点数 110e-3 值为: 0.11
浮点数 5.2E2 值为: 520.0

在 Python 中浮点数间运算存在不确定尾数,但这并不是 Bug ,由于计算机有二进制表示小数,只能无限接近小数值,但不会完全相同。

In [6]:
0.1 + 0.2
Out[6]:
0.30000000000000004

方法:

  • round(x, b):对 x 四舍五入,d 是小数截取位数。
In [7]:
round(0.1 + 0.2, 1)
Out[7]:
0.3

复数

Python 中的复数与数学中复数的概念一致,记 a+b*j 为复数,其中 a 是实部,b 是虚部。

In [8]:
x = 1 + 2j
print('复数 1 + 2j 的实部是:', x.real)
print('复数 1 + 2j 的虚部是:', x.imag)
复数 1 + 2j 的实部是: 1.0
复数 1 + 2j 的虚部是: 2.0

布尔数值

Python 中的布尔数值与数学中布尔代数的概念一致,分为 True 和 False。利用布尔数值可进行逻辑运算。

In [9]:
x = True
y = False

# 与运算
print('x and y =',x and y)
print('x&y = ',x&y)

# 或运算
print('x or y =',x or y)
print('x|y = ',x|y)

# 异或运算
print('x ^ y =',x ^ y)

# 非运算
print('not x =',not x)
x and y = False
x&y =  False
x or y = True
x|y =  True
x ^ y = True
not x = False

空值

空值是 Python 中一种特殊的数据类型,用 None 表示。None 表示一个空对象,不能理解为 0。

In [10]:
x = None
x == 0
Out[10]:
False

序列

字符串

字符串是由 0 个或多个字符组成的有序字符序列,由一对单引号''或一对双引号""表示。

循环语句

In [11]:
print('我是一个字符串')
print("我是另一个字符串")
我是一个字符串
我是另一个字符串