Data Processing Using Python | 用Python玩转数据 Week1.1

Welcome | 欢迎学习用Python玩转数据

图形处理,WEB编程,多媒体应用,PYMO引擎

获取股票数据,描述和处理数学问题,解决专业问题(基因序列),搜集互联网信息(文本信息)

1.1 Walk into Python | 走进Python

Python 的应用

  • Web 开发:Python定义了WSGI标准应用接口来协调http服务器与基于Python的Web程序之间的沟通
  • GUI 开发:用wxPython或者PyQt来开发跨平台的桌面软件
  • 操作系统:大多数Linux发布版以及NetBSD,OpenBSD和Mac OS X 都集成了Python,Python标准库包含了多个调用作业系统功能的库
  • 多媒体:可用于计算机游戏三维场景制作

1.1.1 Introduction to Python | Python 简介

1.1.2 The First Python Program | 第一个Python程序

经典的Hello World

myString = 'Hello, world'
print myString

Python的运行方式

  • Shell方式
    • Shell是交互式的解释器
    • 输入一行命令,解释器就节食运行出相应结果
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!
>>> myString
'Hello, World!'
  • 文件方式
    • 在Python的IDE环境中,创建一个以py为扩展名的文件
    • 用Python解释器在Shell中运行出结果
# Filename: helloworld.py
mystring = 'Hello, World!'
print mystring

执行环境:Python(x, y)

Python输出:print语句

  • Python使用print语句实现输出:
    • print 变量
    • print 字符串
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!

Python输入:raw_input()语句

  • raw_input()返回的类型是字符型
>>> price = raw_input('input the stock price of Apple: ')
input the stock price of Apple: 109
>>> price
'109'
>>> type(price)

Python 风格

  • 注释:#
>>> # comment No.1
>>> print 'hello world'    # comment No.2
hello world!
  • 续行:\
>>> # long sentence
>>> if (signal == 'red') and \
    (car == 'moving'):
        car = 'stop'
    elif (signal == 'green') and \
    (car == 'stop'):
        car = 'moving'

same as:

>>> long sentence
>>> if (signal == 'red') and (car == 'moving'):
        car = 'stop'
    elif (signal == 'green') and (car == 'stop'):
        car = 'moving'
  • 无需续行符可直接换行的两种情况:
    • 小括号,中括号,大括号的内部可以多行书写
    • 三引号包括下的字符串也可以跨行书写
>>> # triple quotes
>>> print '''hi everybody, 
welcome to python's MOOC course. 
Here we can learn something about 
python. Good lucky!'''
  • 一行多语句:;
>>> x = 'Today'; y = 'is'; z = 'Thursday'; print (x, y, z)
('Today', 'is', 'Thursday')
>>> x = 'Today'
>>> y = 'is'
>>> z = 'Thursday'
>>> print (x, y, z)
('Today', 'is', 'Thursday')
  • 缩进
      1. 增加缩进表示语句块的开始
      1. Python用相同的缩进表示同级别语句块
      1. 减少缩进表示语句块的退出
>>> # Indentation
>>> if (signal == 'red') and (car == 'moving'):
        car = 'stop'
        signal = 'yellow'
    elif (signal == 'green') and (car == 'stop'):
        car = 'moving'
        signal = 'yellow'

1.1.3 Basics of Python Syntax | Python 语法基础

变量

  • 变量名: 引用对象,标识对象
>>> # variable
>>> p = 3.14159
>>> myString = 'is a mathematic circular constant'
>>> print p, myString
3.14159 is a mathematic circular constant

标识符

  • 标识符是指Python语言中允许作为变量名或者其他对象名称的有效符号
    • 首字符是字母或下划线
    • 其余可以使字母,下划线,数字
    • 大小写敏感(PI和pi是不同的标识符)
>>> # Identifier
>>> PI = 3.14159
>>> pi = 'one word'
>>> print PI
3.14159
>>> print pi
one word

关键字

  • 关键字是Python语言的关键组成部分,不可随便作为其他对象的标识符
    • 在一门语言中关键字是基本固定的集合
    • 在IDE中常以不同颜色字体出现
and as assert break class continue def del
elif else except exec finally for from global
if import in is lambda not or pass
print raise return try while with yield

表达式

  • 用运算符连接各种类型数据的式子就是表达式
    • 算术运算符:乘方*,正负号+ -,乘除 /,整除//,取余%,加减+ -
    • 位运算符:取反~,与&,或|,异或^,左移<<,右移>>
    • 比较运算符:小于<,大于>,小于等于<=,大于等于>=,等于==,不等于!=
    • 逻辑运算符:非not,与and,或or
  • 运算符有优先级顺序
  • 表达式必须有运算结果
>>> # expression
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r    # 2*PI*r是表达式,运算结果赋值给变量c_circ
>>> print "The circle's circum: %f" % (c_circ)

赋值

  • 变量第一次赋值,同时获得类型和“值”
    • Python是动态的强类型语言
    • 不需要显式声明,根据“值”确定类型
    • 以“引用”的方式实现赋值
>>> # Identifier
>>> PI = 3.14159
>>> pi = 'one word'
>>> print PI
3.14159
>>> print pi
one word
>>> # Identifier
>>> PI = 3.14159
>>> pi = PI
>>> print PI
3.14159
>>> print pi
3.14159

赋值 增量赋值

  • 增量赋值符:+=, -=, *=, /=, %=, **=, <<=, >>=, &=, ^=, |=
  • m &= 5 即 m = m % 5
>>> # assignment
>>> m = 18
>>> m %= 5
>>> m
3
>>> m **= 2
>>> m
9
>>> # assignment
>>> PI = 3.14159
>>> pi = PI = PI * 2
>>> pi
6.28318

赋值 多元赋值

  • 等号左右两边都以元组的方式出现
>>> # assignment
>>> x = 1
>>> y = 2
>>> x, y
(1, 2)
>>> x, y = y, x
>>> x, y
(2, 1)
>>> # assignment
>>> PI, r = 3.14159, 3
>>> PI
3.14159
>>> r
3
>>> (PI, r) = (3.14159, 3)    # same as no round brackets

语句

  • 完整执行一个任务的一行逻辑代码
    • 赋值语句完成了赋值
    • print输出语句完成了输出
>>> # sentence
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r
>>> print "The circle's circum: %f" %(c_circ)

语句和表达式

  • 语句:完成一个任务,如打印一份文件
  • 表达式:任务重的一个具体组成部分,如这份文件的具体内容

1.1.4 Data Types of Python | Python 数据类型

(长)整型,浮点型,复数型,布尔型,字符串,列表,元组,字典

(长)整型

  • 整型和长整型并不严格区分
  • 整型值后加“L”即为长整型
>>> # integer
>>> type(3L)

>>> type(3)

布尔型

  • 整型的子类
  • 仅有2个值:True, False
  • 本质上是用整型的1, 0分别存储的
>>> # boolean
>>> x = True
>>> int(x)
1
>>> y = False
>>> int(y)
0

浮点型

  • 即数学中的实数
  • 可以类似科学计数法表示
>>> # float
>>> 3.22
3.22
>>> 9.8e3
9800.0
>>> -4.78e-2
-0.0478
>>> type(-4.78e-2)

复数型

  • j = 根-1,则j是虚数
  • 实数+虚数 就是复数
  • 虚数部分必须有j
>>> # complex
>>> 2.4 + 5.6j
(2.4 + 5.6j)
>>> type(2.4 + 5.6j)

>>> 3j
3j
>>> type(3j)

>>> 5 + 0j
(5 + 0j)
>>> type(5 + 0j)

  • 复数可以分离实数部分和虚数部分
    • 复数.real
    • 复数.imag
  • 复数的共轭
    • 复数.conjugate()
>>> # complex
>>> x = 2.4 + 5.6j
>>> x.imag
5.6
>>> x.real
2.4
>>>x.conjugate()
(2.4-5.6j)

序列类型

  • 字符串: 单引号,双引号,三引号内的都是字符串,不可变类型
  • 列表: 强大的类型,用方括号 [] 界别,可变类型
  • 元组: 与列表相似,用小括号 () 界别,不可变类型

字符串的表示

  • 单引号
  • 双引号
  • 三引号
>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString = "Hello World!"
>>> print myString
Hello World!
>>> myString = '''Hello World!'''
>>> print myString
Hello World!

映射类型 字典

  • 用大括号 {} 界别
  • 类似于哈希表的键值对
>>> # dictionary
>>> d = {'sine': 'sin', 'cosine': 'cos', 'PI': 3.14159}
>>> d['sine']
'sin'

1.1.5 Basic Operations of Python | Python 基本运算

算术运算

  • 算术运算符的优先级
    • 乘方**, 正负号+ -,
    • 乘除* /, 整除//,
    • 取余%, 加减+ -
>>> # arithmetic
>>> pi = 3.14159
>>> r = 3
>>> circum = 2 * pi * r
>>> x = 1
>>> y = 2
>>> z = 3
>>> result1 = x + 3/y - z % 2
>>> result2 = (x + y ** z * 4) // 5
>>> print circum, result1, result2
18.84954 1 6

比较运算

  • 数值的比较:按值比大小
  • 字符串的比较:按ASCII码值大小
>>> # compare
>>> 3 < 4 < 7    # same as (3 < 4) and (4 < 7)
True
>>> 4 > 3 == 3    # same as (4 > 3) and (3 == 3)
True
>>> 4 < 3 < 5 != 2 < 7
False
>>> # compare
>>> 2 == 2
True
>>> 2.46 <= 8.33
True
>>> 'abc' == 'xyz'
False
>>> 'abc' > 'xyz'
False
>>> 'abc' < 'xyz'
True

逻辑运算

  • 逻辑运算符优先级:
    • not, and, or
>>> # logical
>>> x, y = 3.1415926536, -1024
>>> x < 5.0
True
>>> not (x < 5.0)
False
>>> (x < 5.0) or (y > 2.718281828)
True
>>> (x < 5.0) and (y > 2.718281828)
False
>>> not (x is y)
True
>>> 3 < 4 < 7    # same as "(3 < 4) and (4 < 7)"
True

字符运算符

  • 原始字符串操作符(r / R):
    • 用于一些不希望转义字符起作用的地方
  • Unicode 字符串操作符(u / U):
    • 转化成Unicode字符串
>>> # u
>>> print u'Hello\nWorld'
hello
World
>>> # r
>>> f = open('c:\python\test.py', 'w')
Traceback(most recent call last):
  File "", line 1, in 
    f = open('c:\python\test.py', 'w')
IOError: [Errno 22] invalid mode ('w') or
filename: 'c:\\python\test.py'
>>> f = open(r'c:\python\test.py', 'w')
>>> f = open('c:\\python\\test.py', 'w')

综合运算

>>> # mix
>>> 3 < 2 and 2 < 1 or 5 > 4
True
>>> x + 3/y - z % 2 > 2
False
>>> 3 - 2 << 1
2
>>> 3 - 2 << 1 < 3
True

1.1.6 Functions, Modules and Packages of Python | Python 的函数,模块和包

函数

  • 函数可以看成类似于数学中的函数
  • 完成一个特定功能的一段代码
    • 绝对值函数abs(x)
    • 类型函数type(x)
    • 四舍五入函数round(x)
  • 内建函数
    • cmp(), str()type() 适用于所有标准类型
    • 数值型内建函数:
abs() bool() oct()
coerce() int() hex()
divmod() long() ord()
pow() float() chr()
round() complex()
  • 实用函数
dir() raw_input()
help() open()
len() range()

模块

  • 非内建函数如何使用?
>>> # round-off floor
>>> floor(5.4)
Traceback (most recent call last):
  File "", line 1, in 
    floor(5.4)
NameError: name 'floor' is not defined
>>> # round-off floor
>>> import math
>>> math.floor(-35.4)
-36.0
>>> math.floor(-35.5)
-36.0
>>> math.floor(-35.8)
-36.0
  • 一个完成的Python文件即是一个模块
    • 文件:物理上的组织方式 math.py
    • 模块:逻辑上的组织方式 math
  • Python通常用 "import模块" 的方式将现成模块中的函数,类等重用到其他代码块中
    • math.pi 的值可以直接使用,不需要自行定义
>>> # module
>>> import math
>>> math.pi
3.141592653589793
  • 导入多个模块
  • 模块里导入制定的模块属性,也就是把指定名称倒入到当前作用域
>>> import ModuleName
>>> import ModuleName1, ModuleName2, ...
>>> from Module1 import ModuleElement

包(package)

  • 一个有层次的文件目录结构
  • 定义了一个由模块和子包组成的Python应用程序执行环境
>>> import AAA.CCC.c1
>>> AAA.CCC.c1.func1(123)
>>> from AAA.CCC.c1 import func1
>>> func1(123)
AAA/
  __init__.py
  bbb.py
  CCC/
    __init__.py
    c1.py
    c2.py
  DDD/
    __init__.py
    d1.py
  EEE/
    ...

库(library)

  • 库是一组具有相关功能的模块的集合
  • Python的一大特色就是具有强大的标准库,以及第三方库,以及自定义模块

你可能感兴趣的:(Data Processing Using Python | 用Python玩转数据 Week1.1)