《利用Python进行数据分析-第二版》2

作者: 皮皮大 | 来源:发表于2019-07-12 22:25 被阅读1次

    第二章 Python语法 和 jupyter基础

    常用库及命名

    下面均为各种库的常用命名方式

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    import seaborn as sns
    import statsmodels as sm
    
    data = {i : np.random.randn() for i in range(7)}   # 类似于python字典生成式
    data
    

    结果

    {0: -0.9009056139906951,
     1: -1.581682352812691,
     2: -0.5608536001755129,
     3: -1.2634011018284566,
     4: 0.4831433069203416,
     5: -0.2650450765907828,
     6: -0.7770227536257971}
    
    %pwd   #打印当前路径
    
    'D:\\Python\\datalearning\\Python for data analysis'
    

    补全功能

    • 补全功能是下拉形式
    • 定义变量和Python关键字补全
    • 创建对象的方法和属性的补全
    • 模块的补全
    • 文件路径补全
    • 补全函数的关键词参数,包含等号
    an_apple = 27
    an_orange = 42
    an   # 按下tab键会自动补全
    
    image.png
    b = [1, 2, 3]
    b.   # 按下tab键,补全对象b的各种方法和属性
    
    image.png
    import datetime
    datetime.  # 按下tab键
    
    image.png
    "D://python/datalearning/Python for data analysis"  # 路径补全
    

    自省

    使用问号?可以进行自省功能

    • 变量自省
    • 函数或者实例自省
    b = [1, 3, 4]
    b?
    
    image.png
    def add_number(a, b):
        return a + b
    
    add_number?      #  一个问号:显示相关属性
    add_number??    #  两个问号:显示源码
    
    image.png image.png

    ?问号的另一个功能:配合字符串匹配所有的名字

    np.*load*?  # 星号代表所有,问号代表匹配
    

    image.png

    魔术命令

    魔术命令是指在命令前面加上%前缀

    • %magic? 查看某个命令的用法
    • %run:用来所有的Python程序,也就是.py文件:%run hello.py
    • %load:将py文件导入一个代码格中
    • %paste:直接运行剪贴板中的代码
    • %cpaste:可以粘贴任何一条代码,在输入结束命令之前都不会执行代码,输入--按回车或者使用Ctrl-D停止粘贴代码,停止粘贴代码后会执行代码
    %pwd
    'D:\\Python\\datalearning\\Python for data analysis'
    
    %run test.py   # 直接运行py文件
    
    xiaoming
    the age is 28
    180
    the boy`s hair yellow
    
    • load test.py:将文件导入代码格中
    # %load test.py
    #!/user/bin/env python
    # user:peter
    
    class Person:
        def __init__(self, name):   # 初始化方法
            self.name = name   # 定义一个属性name的值是name
            
        def age(self, n):   # age方法必须传入一个参数
            return "the age is {}".format(n)
        
    class Boy:
        height = 180
        def color(self):
            return "the boy`s hair yellow"
        
    class TallBoy(Person, Boy):
        pass
    
    if __name__ == "__main__":
        boy = TallBoy("xiaoming")
        print(boy.name)
        print(boy.age(28))
        print(boy.height)
        print(boy.color())
    

    结果

    xiaoming
    the age is 28
    180
    the boy`s hair yellow
    

    快捷键说明

    image.png
    a = np.random.randn(100, 100)
    %timeit np.dot(a, a)   # 计算执行时间
    156 µs ± 41.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    %debug?
    

    自动魔术:魔术函数默认不需要百分号,只要没有变量和函数名相同,用%atuomagic打开或者关闭

    foo = %pwd   #   当做变量进行赋值
    foo
    
    'D:\\Python\\datalearning\\Python for data analysis'
    
    image.png
    %matplotlib   #运行魔术命令,进行配置
    Using matplotlib backend: TkAgg
    
    %matplotlib inline    # 绘图中这句话一定要导入
    
    import matplotlib.pyplot as plt
    plt.plot(np.random.randn(50).cumsum())
    

    [<matplotlib.lines.Line2D at 0x25411171ba8>]


    image.png

    Python语言特点

    Python语言具有如下特点:

    • 特点是:可读型强、简洁、清晰
    • 缩进使用括号,最好用4个空格
    • 冒号标志着缩进代码块的开始
    • 万物皆对象,对象有自己的属性和方法
    • 动态类型,强引用
    a = 5
    isinstance(a, int)   # True
    
    a, b = 4, 5.5
    isinstance(a, (int, float))   # 通过元组的形式判断,对象类型是否在元组中   True
    

    鸭子类型

    • 不关心对象的类型,只关心对象是否具有某些方法或者用途,例如通过验证一个类型是否遵循迭代协议,判断它是否可迭代__iter__方法
    • 更好的判断方法是:iter函数
    def isiterable(obj):  # 判断某个对象是否是可迭代的
        try:
            iter(obj)
            return True
        except TypeError:   # not iterable
            return False
    
    isiterable(" hello python")   # True
    isiterable(5)  # False
    
    # 下面实现检验对象是否是列表或者numpy数组,如果不是转成列表:
    if not isinstance(x, list) and isiterable(x):   # 判断是否是列表且对象是可迭代
        x = list(x)   # 转成列表形式
    

    模块引入

    在Python中模块就是.py扩展名和包含Python代码的文件

    #   some_module.py
    PI = 3.14159   # 模块的变量PI
    def f(x):   # 模块的两个函数即方法
        return x + 2
    def g(a, b):
        return a + b
    

    如何调用

    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)
    

    标量类型

    Python的标准库中有一些内建的类型,用以处理数值数据、字符串、布尔值和日期时间等,这种单值 类型称之为标量类型。常用的标量如下:

    类型 作用
    None python的空值,只存在一个None对象的实例
    str 字符串类型
    bytes 原生ASCII字节
    float 双精度64位浮点数
    bool True或者False
    int 任意精度的整数

    相关文章

      网友评论

        本文标题:《利用Python进行数据分析-第二版》2

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