美文网首页
数据分析实战45讲 笔记二

数据分析实战45讲 笔记二

作者: 小蛙的根据地 | 来源:发表于2019-12-07 19:01 被阅读0次

    03丨Python基础语法:开始你的Python之旅

    注释在 python 中使用 #,如果注释中有中文,一般会在代码前添加 # -- coding: utf-8 -。

    针对 module,实际上是引用一个.py 文件。而针对 package,可以采用 from … import …的方式,这里实际上是从一个目录中引用模块,这时目录结构中必须带有一个 init.py 文件。

    可以充分利用一个刷题进阶的网址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1 ,这是浙江大学 ACM 的 OnlineJudge。

    在日常工作中,我们解决的问题都不属于高难度的问题,大部分人做的都是开发工作而非科研项目。所以我们要提升的主要是熟练度,而通往熟练度的唯一路径就是练习、练习、再练习!


    image.png

    04丨Python科学计算:用NumPy快速处理数据

    在 NumPy 里有两个重要的对象:ndarray(N-dimensional array object)解决了多维数组问题,而 ufunc(universal function object)则是解决对数组进行处理的函数。

    1. 为什么使用NumPy
    使用 NumPy 让你的 Python 科学计算更高效。Python 本身的列表 list 需要存储指针和对象且元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。另外在内存访问模式中,缓存会直接把字节块从 RAM 加载到 CPU 寄存器中。

    另:提升内存和提高计算资源的利用率。一个重要的规则就是:避免采用隐式拷贝,而是采用就地操作的方式。举个例子,如果我想让一个数值 x 是原来的两倍,可以直接写成 x=2,而不要写成 y=x2。

    2. 定义数组:创建数组、结构数组
    创建数组:

    import numpy as np
    a = np.array([1, 2, 3])
    b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    b[1,1]=10
    print a.shape
    print b.shape
    print a.dtype
    print b
    

    结果:

    (3,)
    (3, 3)
    int64
    [[ 1  2  3]
     [ 4 10  6]
     [ 7  8  9]]
    

    结构数组:首先在 NumPy 中是用 dtype 定义的结构类型,然后在定义数组的时候,用 array 中指定了结构数组的类型 dtype=persontype,这样你就可以自由地使用自定义的 persontype 了。

    
    import numpy as np
    persontype = np.dtype({
        'names':['name', 'age', 'chinese', 'math', 'english'],
        'formats':['S32','i', 'i', 'i', 'f']})
    peoples = np.array([("ZhangFei",32,75,100, 90),("GuanYu",24,85,96,88.5),
           ("ZhaoYun",28,85,92,96.5),("HuangZhong",29,65,85,100)],
        dtype=persontype)
    ages = peoples[:]['age']
    chineses = peoples[:]['chinese']
    maths = peoples[:]['math']
    englishs = peoples[:]['english']
    print np.mean(ages)
    print np.mean(chineses)
    print np.mean(maths)
    print np.mean(englishs)
    
    • 连续数组的创建
    
    x1 = np.arange(1,11,2)
    x2 = np.linspace(1,9,5)
    

    区别:arange() 类似内置函数 range(),通过指定初始值、终值、步长来创建等差数列的一维数组,默认是不包括终值的。linspace 是 linear space 的缩写,代表线性等分向量的含义。linspace() 通过指定初始值、终值、元素个数来创建等差数列的一维数组,默认是包括终值的。

    3. 运算

    • 算数运算
      通过 NumPy 可以自由地创建等差数组,同时也可以进行加、减、乘、除、求 n 次方和取余数。
    
    x1 = np.arange(1,11,2)
    x2 = np.linspace(1,9,5)
    print np.add(x1, x2)
    print np.subtract(x1, x2)
    print np.multiply(x1, x2)
    print np.divide(x1, x2)
    print np.power(x1, x2)
    print np.remainder(x1, x2)
    

    结果:

    [ 2.  6. 10. 14. 18.]
    [0. 0. 0. 0. 0.]
    [ 1.  9. 25. 49. 81.]
    [1. 1. 1. 1. 1.]
    [1.00000000e+00 2.70000000e+01 3.12500000e+03 8.23543000e+05
     3.87420489e+08]
    [0. 0. 0. 0. 0.]
    
    • 统计运算(函数)
      计数组 / 矩阵中的最大值函数 amax(),最小值函数 amin()
    import numpy as np
    a = np.array([[1,2,3], [4,5,6], [7,8,9]])
    print(np.amin(a))
    print(np.amin(a,0))
    print(np.amin(a,1))
    print(np.amax(a))
    print(np.amax(a,0))
    print(np.amax(a,1))
    

    统计最大值与最小值之差 ptp()

    统计数组的百分位数 percentile()
    统计数组中的中位数 median()、平均数 mean()
    统计数组中的加权平均值 average()

    
    a = np.array([1,2,3,4])
    wts = np.array([1,2,3,4])
    print np.average(a)
    print np.average(a,weights=wts)
    

    2.5
    3.0
    统计数组中的标准差 std()、方差 var()

    4. 排序
    排序算法在 NumPy 中实现起来其实非常简单,一条语句就可以搞定。这里你可以使用 sort 函数,sort(a, axis=-1, kind=‘quicksort’, order=None),默认情况下使用的是快速排序;在 kind 里,可以指定 quicksort、mergesort、heapsort 分别表示快速排序、合并排序、堆排序。同样 axis 默认是 -1,即沿着数组的最后一个轴进行排序,也可以取不同的 axis 轴,或者 axis=None 代表采用扁平化的方式作为一个向量进行排序。另外 order 字段,对于结构化的数组可以指定按照某个字段进行排序。

    
    a = np.array([[4,3,2],[2,4,1]])
    print np.sort(a)
    print np.sort(a, axis=None)
    print np.sort(a, axis=0)  
    print np.sort(a, axis=1)  
    

    结果:

    
    [[2 3 4]
     [1 2 4]]
    [1 2 2 3 4 4]
    [[2 3 1]
     [4 4 2]]
    [[2 3 4]
     [1 2 4]]
    

    排序还是没有搞懂,尤其是axis的概念

    相关文章

      网友评论

          本文标题:数据分析实战45讲 笔记二

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