第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