Python for Data Analysis (2)

附录A

pwd
'/Users/momo/code/python/learnpython'
ls
100odd.py            fab.py               leapyear.py
1to100.py            fib_401.py           odd.py
3.30_primenumber.py  fiverings.py         parallel.py
MCMC.py              get_counts.ipynb     printlist.py
Narcissus_number.py  guess8.py            redyellowblue.py
Untitled.ipynb       guess8_1.py          sanyuanfu.py
__init__.py          guess8_2.py          scoreABCD.py
binary_decima.py     guessrandom.py       square.py
color_square.py      hanoi.py             stepstairs.py
countseconds.py      hellowho.py          打飞机框架.txt
decima_bianry.py     ipython_1.py
%run odd.py #会在同一个进程中执行指定的文件中的代码
------------奇偶数------------
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
a=4;b=5
isinstance(a,(bool,float)) #可以检查多种数据类型,用元组来指定
False
a='abcd'
getattr(a,'split') #访问属性和方法,还有相关的hasattr and setattr
<function str.split>

迭代器(看到这个问题,意外补充的内容)



迭代器就是有一个 next() 方法的对象,而不是通过索引来计数。当你或是一个循环机制(例如 for 语句)需要下一个项时,
调用迭代器的 next() 方法就可以获得它。条目全部取出后,会引发一个 StopIteration 异常,这并不表示错误发生,
只是告诉外部调用者,迭代完成.

不过,迭代器也有一些限制。例如你不能向后移动,不能回到开始,也不能复制一个迭代器.如果你要再次(或者是同时)迭代同个对象,
你只能去创建另一个迭代器对象。不过,这并不糟糕,因为还有其他的工具来帮助你使用迭代器。

reversed() 内建函数将返回一个反序访问的迭代器。enumerate() 内建函数同样也返回迭代器.另外两个新的内建函数,
any() 和 all() ,在 Python 2.5 中新增,如果迭代器中某个/所有条目的值都为布尔真时,则它们返回值为真。
本章先前部分展示了如何在 for 循环中通过索引或是可迭代对象来遍历条目。
同时 Python 还提供了一整个 itertools 模块,它包含各种有用的迭代器.

  1. 使用迭代器

    • 序列
    • try-except语句来处理导常
    • 字典
    • 文件
  2. 可变对象和迭代器

  3. 如何创建迭代器


  • 序列
#面对序列:列表,元组,字符串
m=iter('abcd')
tuple1=(1,'dkf',3,'adsf')
n=iter(tuple1)
print m.next()
print m.next()
print m.next()
print m.next()
print n.next()
print n.next()
print n.next()
print n.next()
a
b
c
d
1
dkf
adf
adsf

如果这是一个实际应用程序,那么需要把代码放在一个 try-except 块中。序列现在会自动地产生它们自己的迭代器,所以一个 for 循环:

#这里不是很理解!!!

#示例:
for i in seq:
    do_something_to(i)

#实际工作方式:
fetch = iter(seq)
while True:
    try:
        i = fetch.next()
    except Stoplteration:
        break
    do_something_to(i)


  • try-except语句来处理导常

它如何工作

我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。

如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息,我们已经看到了这样的处理。

你还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

#如果你在写python程序时遇到异常后想进行如下处理的话,一般用try来处理异常,假设有下面的一段程序:
try:
    语句1
    语句2
    .
    .
    语句N
except .........:
    do something .......

但是你并不知道”语句1至语句N”在执行会出什么样的异常,但你还要做异常处理,且想把出现的异常打印出来,并不停止程序的运行,所以在”except ……”这句应怎样来写呢?

这里总结了一3个方法:
#方法一:捕获所有异常
try:
    a=b
    b=c
except Excepiton,e:
    print Exception,":",e

#方法二:采用traceback模块查看异常
#引入PYTHON中的traceback模块,跟踪错误

import traceback
try:
    a=b
    b=c
except:
    traceback.print_exc()

#方法三:采用sys模块查看异常

import sys
try:
    a=b
    b=c
except:
    info=sys.exc_info()
    print info[0],":",info[1]

但是,如果你还想把这些异常保存到一个日志文件中,来分析这些异常,那么请看下面的方法:
把 traceback.print_exc() 打印在屏幕上的信息保存到一个文本文件中

import traceback
try:  
    a=b  
    b=c  
except:  
    f=open("c:log.txt",'a')  
    traceback.print_exc(file=f)  
    f.flush()  
    f.close()
  • 字典

字典和文件是另外两个可迭代的 Python 数据类型。字典的迭代器会遍历它的键(keys).
语句 for eachKey in myDict.keys() 可以缩写为 for eachKey in myDict ,例如:

legends = {('Poe','author'): (1809,1849,1976),
('Gaudi','architect'): (1852,1906,1987)}

for eachLegend in legends:
    print 'Name:%s Occupation:%s'%eachLegend
    print 'Birth:%s Death:%s Album:%s'%legends[eachLegend]
Name:Poe Occupation:author
Birth:1809 Death:1849 Album:1976
Name:Gaudi Occupation:architect
Birth:1852 Death:1906 Album:1987

另外,Python 还引进了三个新的内建字典方法来定义迭代:
myDict.iterkeys() (通过 keys 迭代),myDict.itervalues() (通过 values 迭代),以及 myDicit.iteritems() (通过 key/value 对来迭代)

注意,in操作符也可以用于检查字典的 key 是否存在,之前的布尔表达式myDict.has_key(anyKey) 可以被简写为 anyKey in myDict。


  • 文件

文件对象生成的迭代器会自动调用 readline() 方法。
这样循环就可以访问文本文件的所有行。程序员可以使用 更简单的 for eachLine in myFile 替换 for eachLine in myFile.readlines():

myFile=open(‘config-win.txt’)

for eachLine in myFile:
    print eachLine

  • 如何创建迭代器

对一个对象调用 iter() 就可以得到它的迭代器。它的语法如下:
iter(obj)
iter(func,sentinel)
如果传递一个参数给 iter() ,它会检查你传递的是不是一个序列,如果是,那么很简单:
根据索引从 0 一直迭代到序列结束。另一个创建迭代器的方法是使用类,将在第 13 章详细介绍,一个实现了 iter() 和 next() 方法的类可以作为迭代器使用.
如果是传递两个参数给 iter() ,它会重复地调用 func ,直到迭代器的下个值等于sentinel。

#书上内容
def isiterable(obj):
    try:
        iter(obj)
        return True
    except TypeError:
        return False
这本书主要是用 pandas 连接 SciPy 和 NumPy,用pandas做数据处理是Pycon2012上一个很热门的话题。另一个功能强大的东西是Sage,它将很多开源的软件集成到统一的 Python 接口。, Python for Data Analysis is concerned with the nuts and bolts of manipulating, processing, cleaning, and crunching data in Python. It is also a practical, modern introduction to scientific computing in Python, tailored for data-intensive applications. This is a book about the parts of the Python language and libraries you’ll need to effectively solve a broad set of data analysis problems. This book is not an exposition on analytical methods using Python as the implementation language., Written by Wes McKinney, the main author of the pandas library, this hands-on book is packed with practical cases studies. It’s ideal for analysts new to Python and for Python programmers new to scientific computing., Use the IPython interactive shell as your primary development environment, Learn basic and advanced NumPy (Numerical Python) features, Get started with data analysis tools in the pandas library, Use high-performance tools to load, clean, transform, merge, and reshape data, Create scatter plots and static or interactive visualizations with matplotlib, Apply the pandas groupby facility to slice, dice, and summarize datasets, Measure data by points in time, whether it’s specific instances, fixed periods, or intervals, Learn how to solve problems in web analytics, social sciences, finance, and economics, through detailed examples
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值