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)
<type 'str'>

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 'long'>
>>> type(3)
<type 'int'>

布尔型

  • 整型的子类
  • 仅有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)
<type 'float'>

复数型

  • j = 根-1,则j是虚数
  • 实数+虚数 就是复数
  • 虚数部分必须有j
>>> # complex
>>> 2.4 + 5.6j
(2.4 + 5.6j)
>>> type(2.4 + 5.6j)
<type 'complex'>
>>> 3j
3j
>>> type(3j)
<type 'complex'>
>>> 5 + 0j
(5 + 0j)
>>> type(5 + 0j)
<type 'complex'>
  • 复数可以分离实数部分和虚数部分
    • 复数.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 "<pyshell#12>", line 1, in <module>
    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 "<pyshell#0>", line 1, in <module>
    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的一大特色就是具有强大的标准库,以及第三方库,以及自定义模块
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,406评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,976评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,302评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,366评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,372评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,457评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,872评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,521评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,717评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,523评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,590评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,299评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,859评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,883评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,127评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,760评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,290评论 2 342

推荐阅读更多精彩内容

  • 前言 ||| 第二章 使用ArcPy编写脚本 Python支持大部分在其他语言中出现的编程结构。在本章内容中,我们...
    muyan阅读 89,898评论 10 55
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,562评论 6 37
  • 1. 我醒了过来,感觉头疼的就要炸裂。四周一片漆黑,我大惊“不妙”,挣扎着想要站立起来,可是脚下的地面突然晃荡了起...
    晴兽菌阅读 109评论 0 0
  • 来谈点自己这段时间的感受吧。初始水湄在豆瓣,来小白训练营也是因为她的广告文,9块钱的21天训练营至今,收获当然远不...
    叶籽猫阅读 430评论 0 10
  • 49周计回顾 1.项目化CEO本周重点作业:搜索阅读4篇与年计划、年目标制定有关的文章,做4张脑图, 2.把4篇的...
    李琳艳阅读 198评论 0 0