美文网首页我爱编程
《用Python玩转数据》-04 Python扩展库

《用Python玩转数据》-04 Python扩展库

作者: LxinG_YY | 来源:发表于2018-03-24 20:39 被阅读31次

    4.4 扩展库Scipy

    • Numpy
    • Matplotlib
    • Panadas

    Numpy

    Numpy主要实现的是数据结构,比如线性矩阵

    Numpy介绍
    import numpy as np
    a = np.ones((3,4))
    print(a)
    

    Scipy核心库

    简单来说科学计算主要集中在里头啦


    Scipy核心库

    Matplotlib

    方便作图,曲线直方图等等


    Matplotlib

    Pandas

    核心在于高效的Series和DataFrame数据结构

    Pandas

    4.5 ndarray

    基本分类

    • Python中的列表(list、tuple)元素可以是任何类型,所以保存的是指向元素的指针

    • array模块
      通过array函数来创建数组,array.array("B", range(5)),不支持多维数组,数组方法也不尽够用

    • ndarray
      NumPy中的基本数据结构,别名array,结构如下

    ndarray基本结构

    基本属性有:

    • ndarray.ndim(秩)
    • ndarray.shape(维度)
    • ndarray.size(元素个数)
    • ndarray.type(元素类型)
    • ndarray.itemsize(元素大小)

    ndarray的创建

    • array()
      参数为序列
    np.array([1,2,3])
    np.array([(1,2,3),(4,5,6)])
    
    • arange()
      和range类似,但此处可以处理浮点数
    np.arange(1,5, 0.5)
    
    • random()
    np.random.random(2,2)
    
    • linspace()
    np.linspace(1, 2, 10, endpoint = False)
    
    • ones()、zeros()
    • fromfunction()
    np.fromfunction(lambda i, j: (i+1)*(j+1), (9,9))
    

    ndarray的操作

    • 切片


      ndarray切片
    • arrray.reshape()
      改变原有形状,更像矩阵里面的转秩

    ndarray的运算

    常用的加减乘除皆可使用,形状不同也可适应,源于广播的理念
    NumPy中较小的数组会广播到较大数组的大小,使它们的形状兼容,其中较小数组维度的长度为1,例如:

    a = np.array([1, 2, 3])
    b = np.array([[4, 5, 6], [7, 8, 9]])
    #将数组a按数组b扩展成了维度为(2, 3)的数组,第1行新值与第0行一样为“[1, 2, 3]”
    
    • sum()、min()、max()可再numpy运算函数方法
    aArray = np.array([(1,2,3), (4,5,6)])
    
    aArray.sum()
    Out[25]: 21
    
    aArray.sum(axis = 0)
    Out[26]: array([5, 7, 9])
    
    aArray.sum(axis = 1)
    Out[27]: array([ 6, 15])
    
    aArray.min()
    Out[28]: 1
    
    aArray.max()
    Out[29]: 6
    

    4.6变长字典Series

    • 类似一维数组对象
    • 由数据和索引组成
    from pandas import Series
    aSer = pd.Series([1,2,3,'a'],index = [1,2,3])
    
    aSer.index
    Out[16]: Index(['a', 'b', 'c', 'd'], dtype='object')
    
    aSer.values
    Out[17]: array([1, 2, 3, 'a'], dtype=object)
    

    基本操作

    • 基本加减乘除以及乘方等
    • 数据对齐
    #eg1
    data = {'AXP':'86.40', 'CSCO':'112.64', 'BA':'99.44'}
    sindex = ['AXP','CSCO','AAPL','BA']
    aSer = pd.Series(data, index = sindex)
    aSer
    Out[26]: 
    AXP      86.40
    CSCO    112.64
    AAPL       NaN
    BA       99.44
    dtype: object
    
    #eg2
    bSer = {'AXP':'86.40', 'CSCO':'112.64', 'CVX':'23.78'}
    cSer = pd.Series(bSer)
    aSer + cSer
    Out[29]: 
    AAPL             NaN
    AXP       86.4086.40
    BA               NaN
    CSCO    112.64112.64
    CVX              NaN
    dtype: object
    
    • name属性
    aSer.name = 'SeriesTest'
    aSer.index.name = 'Volume'
    aSer
    Out[32]: 
    Volume
    AXP      86.40
    CSCO    112.64
    AAPL       NaN
    BA       99.44
    Name: SeriesTest, dtype: object
    

    4.7 DataFrame

    相较于series的一维结构,DataFrame是一个二维表格型数据结构可以看做是**共享同一个index的Series集合

    data = {'name':['Wangdachui', 'Linling', 'Niuyun'], 'sallery':[4000, 5000, 6000]}
    frame = pd.DataFrame(data)
    print(frame)
    Out[35]: 
             name  sallery
    0  Wangdachui     4000
    1     Linling     5000
    2      Niuyun     6000
    

    基本操作

    • 获取DataFrame对象的列和行可获得Series(即可对数据进行列分析)
    frame['name']
    frame['sallery']
    
    • DataFrame对象的修改和删除
    frame['name'] = 'Admin'
    frame
    Out[40]: 
        name  sallery
    1  Admin     4000
    2  Admin     5000
    3  Admin     6000
    
    del frame['name']
    frame
    Out[42]: 
       sallery
    1     4000
    2     5000
    3     6000
    
    • 对index.name 进行设置

    相关文章

      网友评论

        本文标题:《用Python玩转数据》-04 Python扩展库

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