python数据分析主要处理的是结构化数据(structured data)例如:
text.py
可以通过%run text.py
来运行这个文件 可以在该命令行后面添加命令行参数(可在ays.argv
访问)另外可以使用%load
将脚本导入到代码格中%paste
%cpaste
可以执行剪切板中的代码 %cpaste
会给出提示 Python使用空白字符(tab和空格)来组织代码,而不是像其它语言,比如R、C++、JAVA和Perl那样使用括号。看一个排序算法的for
循环
for x in array:
if x < pivot:
less.append(x)
else:
greater.append(x)
冒号标志着缩进代码块的开始,冒号之后的所有代码的缩进量必须相同,直到代码块结束。分号;却可以用来给同在一行的语句切分:a = 5; b = 6; c = 7
.
来访问。当你将对象作为参数传递给一个函数时,在函数内使用新的局域变量创建了对原始对象的引用,而不是复制(传值还是传引用这取决于传入的参数是可变对象还是不可变对象)。如果在函数里绑定一个新对象到一个变量,这个变量的变动会反映到上一层。因此可以改变可变参数的内容。假设有以下函数: def append_element(some_list, element): some_list.append(element) data = [1,2,3] append_element(data,4) data out: [1, 2, 3 ,4]
__iter__
魔术方法,其它更好的判断方法是使用iter
函数:
def isiterable(obj): try: iter(obj) return True except TypeError: # not iterable return False
a = input("please enter a number")
输入3 那么a的类型是str
.py
扩展名、包含Python代码的文件。假设有以下模块:
# some_module.py PI = 3.14159 def f(x): return x + 2 def g(a, b): return a + b
如果想从同目录下的另一个文件访问some_module.py
中定义的变量和函数,可以:
import some_module result = some_module.f(5) pi = some_module.PI
或者:
from some_module import f, g, PI result = g(5, PI)
使用as
关键词,你可以给引入起不同的变量名:
import some_module as sm from some_module import PI as pi, g as gf r1 = sm.f(pi) r2 = gf(6, pi)
.
tips:list会创建一个新的Python列表是复制
tips:可以在字符串前面加一个r,表明字符就是它自身 字符串对象有
format
方法可以替换格式化的参数为字符串,产生一个新的字符串: template = '{0:.2f} {1:s} are worth US${2:d}'
{1:s}
表示格式化第二个参数为字符串。{2:d}
表示格式化第三个参数为一个整数。template.format(4.5560, 'Argentine Pesos', 1) >>>'4.56 Argentine Pesos are worth US$1' 使用str.encode('utf-8')可以将字符串编码为utf-8
datetime
模块提供了datetime
、date
和time
类型。datetime
类型结合了date
和time
,是最常使用的:
In [1]: from datetime import datetime, date, time
In [2]: dt = datetime(2011, 10, 29, 20, 30, 21)
In [3]: dt.day
Out[4]: 29
In [5]: dt.minute
Out[6]: 30
strftime
方法可以将datetime格式化为字符串:
In [108]: dt.strftime('%m/%d/%Y %H:%M')
Out[108]: '10/29/2011 20:30'
当你聚类或对时间序列进行分组,替换datetimes的time字段有时会很有用。例如,用0替换分和秒:
In [110]: dt.replace(minute=0, second=0)
Out[110]: datetime.datetime(2011, 10, 29, 20, 0)
因为datetime.datetime
是不可变类型,上面的方法会产生新的对象。
两个datetime对象的差会产生一个datetime.timedelta
类型:
if
后面可以跟一个或多个elif
,所有条件都是False时,还可以添加一个else
可以用continue使for循环提前继续执行,可以用break
跳出for循环break只中断for循环的最内层。
pass是Python中的非操作语句。代码块不需要任何动作时可以使用(作为未执行代码的占位符);因为Python需要使用空白字符划定代码块,所以需要pass
range函数返回一个迭代器,它产生一个均匀分布的整数序列:
In [123]: list(range(10))
Out[123]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
assert
Python支持一种被称为匿名的、或lambda函数。它仅由单条语句组成,该语句的结果就是返回值。它是通过lambda关键字定义的,这个关键字没有别的含义,仅仅是说“我们正在声明的是一个匿名函数”。
def short_function(x):
return x * 2
equiv_anon = lambda x: x * 2
元组是一个固定长度,不可改变的Python序列对象。创建元组的最简单方式,是用逗号分隔一列值或者将值放在圆括号内,元组中存储的对象可能是可变对象。一旦创建了元组,元组中的对象就不能修改了:
In [1]: tup = 4, 5, 6
In [2]: tup
Out[2]: (4, 5, 6)
In [3]: nested_tup = (4, 5, 6), (7, 8)
In [4]: nested_tup
Out[4]: ((4, 5, 6), (7, 8))
用tuple
可以将任意序列或迭代器转换成元组
可以用方括号访问元组中的元素下表从0开始
In [8]: tup[0]
Out[8]: 's'
如果元组中的某个对象是可变的,比如列表,可以在原位进行修改:
In [11]: tup[1].append(3)
In [12]: tup
Out[12]: ('foo', [1, 2, 3], True)
列表是可变对象、内容可以被修改。可以用方括号定义,或用list
函数,可以用append
在列表末尾添加元素insert
可以在特定的位置插入元素,insert的逆运算是pop,remove
去除某个值,in
可以检查列表是否包含某个值,用extend
方法可以追加多个元素:
用切边可以选取大多数序列类型的一部分,切片的基本形式是在方括号中使用start:stop
注意左闭右开
字典可能是Python最为重要的数据结构。它更为常见的名字是哈希映射或关联数组。它是键值对的大小可变集合,键和值都是Python对象。创建字典的方法之一是使用尖括号,用冒号分隔键和值{key:value}注意其中的key必须是可哈希性的
集合可以使用set来定义集合的操作如下表