第1-3章

作者: AmaAnchor | 来源:发表于2019-03-10 14:55 被阅读0次

《用python进行数据分析 第二版》
示例代码:https://github.com/wesm/pydata-book
本书大部分内容关注的是基于表格的分析和处理大规模数据集的数据准备工具

ipython

?的用法

显示函数信息
image.png
image.png

??的用法

显示函数内容
image.png

%run命令
使用%run命令在ipython中运行一个程序


image.png

(Hanoi.py为本地的一个文件)

文件中所定义的所有变量都可以在ipython中访问

ipython常用快捷键

image.png

ipython中的魔术命令


image.png

模块学习

bisect

bisect.insort(),插入元素后保持原列表有序

image.png

enumerate函数

接收一个可迭代对象,返回其中每个值和它的小标(以元组的形式)
image.png

sorted函数

 不改变原序列的前提下得到原序列的有序版拷贝
image.png

zip函数

zip()&字典解析
zip([iterable,…])

参数为多个可迭代对象,返回值为以元组为元素的列表,第i个元组的元素为参数中每个可迭代对象的第i个元素
可用来创建字典:


reversed函数

从后向前迭代一个序列
image.png

例1

现在有一个如下列表

In [161]: all_data = [['John', 'Emily', 'Michael', 'Mary', 'Steven'],
   .....:             ['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]

要求取出所有名字中由两个e的名字

In [128]: result=[name for names in all_data for name in names if name.count('e')>=2]
In [131]: result
Out[131]: ['Steven']

例2

有如下的用户输入数据

In [171]: states = ['   Alabama ', 'Georgia!', 'Georgia', 'georgia', 'FlOrIda',
   .....:           'south   carolina##', 'West virginia?']

现在要对这些数据进行清洗(使之成为正确的人名)
当我们需要对一组数据执行多个操作时,可以将多个操作放入一个列表中

In [152]: result=[]

In [153]: for x in states:
     ...:     for fun in clean_ops:
     ...:         x=fun(x)
     ...:     result.append(x)
     ...:

In [154]: result
Out[154]:
['Alabama',
 'Georgia',
 'Georgia',
 'georgia',
 'FlOrIda',
 'south   carolina',
 'West virginia']

例3

假设有一组字符串

In [177]: strings = ['foo', 'card', 'bar', 'aaaa', 'abab']

你想要根据各字符串不同字母的数量对其进行排序

strings.sort(key=lambda x: len(x))

ut[175]: ['bar', 'foo', 'aaaa', 'abab', 'card']

涉及到序列的排序方法sort()的高级语法 修改sort()的key参数(sorted方法同理)

柯里化:部分参数应用

即对现有函数的调用,同时只保留现有函数的部分参数(另一部分参数固定)

In [176]: def sum(x,y):
     ...:     return x+y
     ...:
     ...:

In [177]: curry=lambda y:sum(5,y)

In [178]: curry(5)
Out[178]: 10

itertools模块

标准库itertools模块中有一组用于许多常见数据算法的生成器

例如:groupby可以接受任何序列和一个函数。它根据函数的返回值对序列中的连续元素进行分组。下面是一个例子

In [216]: strings
Out[216]: ['bar', 'foo', 'aaaa', 'abab', 'card']

In [217]: for letter,names in groupby(strings,lambda x : x[0]):
     ...:     print(letter,tuple(names))
     ...:
     ...:
b ('bar',)
f ('foo',)
a ('aaaa', 'abab')
c ('card',)

image.png

相关文章

网友评论

      本文标题:第1-3章

      本文链接:https://www.haomeiwen.com/subject/pwkrpqtx.html