python數據分析與展示


一、Python數據分析與展示需要掌握的能力

  數據表示

  數據清洗

  數據統計

  數據展示

二、常用庫

  numpy(ndarray)、matplotlib(pyplot)、pandas(Series、DateFrame)

三、編程工具

  使用Anaconda IDE集成開發工具

  需要理解和掌握的工具:conda、Spyder、IPython

四、Numpy入門

  1、數據的維度

  維度:一組數據的組織形式。

  一維數據:由對等關系的有序或無序數據構成,采用線性方式組織,對應列表、數組、集合等概念。

  二維數據:有多個一維數據構成,是一維數據的組合形式,表格是典型的的二維數據,其中,表頭是二維數據的一部分。

  多維數據:由一維或二維在新維度上擴展形成。

  高維數據:僅利用最基本的二元關系展示數據間的復雜結構,對應字典。

  2、NumPy的數組對象:ndarray

  介紹:NumPy是一個開源的Python科學計算庫,包括:

     一個強大的N維數組對象 ndarray

     廣播功能函數

     整合C/C++/Fortran代碼的工具

     線性代數、傅里葉變化、隨機數生成等功能。

 

     NumPy是Scipy、Pandas等數據處理或科學計算庫的基礎

  引用:

     import numpy as np(建議使用上述約定的別名)

  N維數組對象:ndarray

     Python已有列表類型,為什么需要一個數組對象(類型)?

      數組對象可以去掉元素間運算所需的循環,使一位向量更像單個數據;

      設置專門的數組對象,經過優化,可以提升這類應用的運算速度。

     N維數組對象的組成:實際數據、描述這些數據的元數據(數據維度、數據類型等)

     ndarray數組一般要求所有元素類型相同(同質),數組下表從0開始。

     ndarray在程序中的別名是:array,np.array()生成一個ndarray數組,np.array()輸出成[]形式,元素有空格分割

     軸(axis):保存數據的維度;秩(rank):軸的數據

  ndarray對象的屬性:

    .ndim(秩,即軸的數量或維度的數量)

    .shape(ndarray對象的尺度,對於矩陣,n行m列)

    .size(ndarray對象元素的個數,相當於.shape 中n*m的值)

  ndrray的元素類型:bool、intc(int32或int64)、intp(int32或int64)、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64、complex64、complex128

    .dtype(ndarray對象的元素類型)

    .itemsize(ndarray對象中每個元素的大小,以字節為單位)

  ndarray數組的創建:

    從Python中的列表、元組等類型創建ndarray數組;

    使用NumPy中函數創建ndarray數組,如:

      np.arange(n):類似range()函數,返回ndarray類型,元素從 0 到 n ‐ 1

      np.ones(shape):根據shape生成一個全 1數組,shape是元組類型

      np.zeros(shape):根據shape生成一個全 0數組,shape是元組類型

      np.full(shape,val):根據shape生成一個數組,每個元素值都是val

      np.eye(n):創建一個正方的n*n單位矩陣,對角線為 1,其余為 0

      np.ones_like(a):根據數組 a的形狀生成一個全 1數組

      np.zeros_like(a):根據數組 a的形狀生成一個全 0數組

      np.full_like(a,val):根據數組 a的形狀生成一個數組,每個元素值都是val

      np.linspace():根據起止數據等間距地填充數據,形成數組

      np.concatenate():數組 np.concatenate() 將兩個或多個數組合並成一個新的數組

    從字節流(raw bytes)中創建ndarray數組;

    從文件中讀取特定格式,創建ndarray數組。

  ndarray數組的變換:對於創建后的ndarray數組,可以對其進行維度變換和元素類型變換

    a = np.ones((2,3,4), dtype=np.int32)

    .reshape(shape):不改變數組元素,返回一個shape形狀的數組,原數組不變

    .resize(shape):與.reshape()功能一致,但修改原數組

    .swapaxes(ax1,ax2):將數組 n個維度中兩個維度進行調換

    .flatten():對數組進行降維,返回折疊后的一維數組,原數組不變

    .astype(new_type):ndarray數組的類型變換,astype()方法一定會創建新的數組(原始數據的一個拷貝),即使兩個類型一致

  ndarray數組的索引和切片:

    一維數組的索引和切片:與Python的列表類似

    多維數組的索引和切換:每個維度的索引和切片使用逗號隔開

  ndarray數組的運算:

    數組與變量之間的運算:數組與標量之間的運算作用於數組的每一個元素

    NumPy一元函數(對ndarray中的數據執行元素級運算的函數):

      np.abs(x) np.fabs(x):計算數組各元素的絕對值

      np.sqrt(x):計算數組各元素的平方根

      np.square(x):計算數組各元素的平方

      np.log(x) np.log10(x) np.log2(x):計算數組各元素的自然對數、10底對數和 2底對數

      np.ceil(x) np.floor(x):計算數組各元素的ceiling值 或 floor 值

      np.rint(x):計算數組各元素的四舍五入值

      np.modf(x):將數組各元素的小數和整數部分以兩個獨立數組形式返回

      np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x):計算數組各元素的普通型和雙曲型三角函數

      np.exp(x):計算數組各元素的指數值

      np.sign(x):計算數組各元素的符號值,1(+), 0, ‐1( ‐ )

    NumPy二元函數:

      + ‐ * / **:兩個數組各元素進行對應運算

      np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin():元素級的最大值 /最小值計算

      np.mod(x,y):元素級的模運算

      np.copysign(x,y):將數組 y中各元素值的符號賦值給數組 x對應元素

      > < >= <= == !=:算術比較,產生布爾型數組

  3、Numpy數據存取

    數據的CSV文件存取:(CSV只能有效存儲一維和二維數組)

      CSV:逗號分隔值

      np.savetxt(frame, array, fmt="%.18e", delimiter=None)

        frame:文件、字符串或產生器,可以是.gz或.bz2的壓縮文件

        array:存入文件的數組

        fmt:寫入文件的格式,例如:%d %.2f %.18e

        delimiter:分割字符串,默認是任何空格(CSV文件是逗號)

      np.loadtxt(frame, dtype=np.float,delimiter=None,unpacke=False)

        frame:文件、字符串或產生器,可以是.gz或.bz2的壓縮文件

        dtype:數據類型,可選

        delimiter:分割字符串,默認是任何空格 

        unpack:如果True,讀入屬性將分別寫入不同變量

    多維數據的存取:(下面的讀取方法需要知道存入文件時數組的維度和元素類型)

      a.tofile(frame, sep='',format="%s")

        frame:文件、字符串

        sep:數據分割字符串,如果是空串,寫入文件為二進制

        format:寫入數據的格式

      np.fromfile(frame, dtype=float,count=-1,sep='')

        frame:文件、字符串

        dtype:讀取的數據類型

        count:讀入元素個數,‐1表示讀入整個文件

        sep:數據分割字符串,如果是空串,寫入文件為二進制

    NumPy的便捷文件存取:(下面的方法會在第一行存儲數組的元信息,因而可以讀取成和存儲時一樣的數組)

      np.save(fname, array) 或np.savez(fname, array)

        frame:文件名,以.npy為擴展名,壓縮擴展名為.npz

        array:數組變量

      np.load(fname)

        frame:文件名,以.npy為擴展名,壓縮擴展名為.npz

  4、NumPy的隨機數函數(隨機數隨機出來的數據也是ndarray數組)

    NumPy的隨機數函數子庫:np.random.*,例如:np.random.rand()、np.random.randn()、np.random.randint()

    np.random的隨機數函數:

      rand(d0,d1,...,dn):根據d0‐dn創建隨機數數組,浮點數,[0,1),均勻分布 ,d表示維度

      randn(d0,d1,...,dn):根據d0‐dn創建隨機數數組,浮點數,[0,1),標准正態分布 ,d表示維度

      seed(s):隨機數種子,s是給定的種子值,只要給定種子值,隨機出來的數組就是固定的

      randint(low[,high,shape]):根據shape創建隨機整數或整數數組,范圍是[low, high) 

      shuffle(a):根據數組a的第1軸進行隨排列,改變數組x 

      permutation(a):根據數組a的第1軸產生一個新的亂序數組,不改變數組x 

      choice(a, [,size,replace,p]):從一維數組a中以概率p抽取元素,形成size形狀新數組 replace表示是否可以重用元素,默認為False

      uniform(low,high,size):產生具有均勻分布的數組,low起始值,high結束值,size形狀 

      normal(loc,scale,size):產生具有正態分布的數組,loc均值,scale標准差,size形狀 

      poisson(lam,size):產生具有泊松分布的數組,lam隨機事件發生率,size形狀

    NumPy統計函數:

      NumPy直接提供的統計類函數:np.std、np.var()、np.average()

      sum(a,axis=None):根據給定軸axis計算數組a相關元素之和,axis整數或元組

      mean(a,axis=None):根據給定軸axis計算數組a相關元素的期望,axis整數或元組

      average(a,axis=None,weights=None):根據給定軸axis計算數組a相關元素的加權平均值

      std(a,axis=None):根據給定軸axis計算數組a相關元素的標准差

      var(a,axis=None):根據給定軸axis計算數組a相關元素的方差

      min(a) max(a):計算數組a中元素的最小值、最大值

      argmin(a) argmax(a):計算數組a中元素最小值、最大值的降一維后下標

      unravel_index(index,shape):根據shape將一維下標index轉換成多維下標

      ptp(a):計算數組a中元素最大值與最小值的差

      median(a):計算數組a中元素的中位數(中值)

    NumPy的梯度函數:

      梯度:連續值之間的變化率,即斜率

      XY坐標軸連續三個X坐標對應的Y軸值:a, b, c,其中,b的梯度是:(c‐a)/2

      np.gradient(f):計算數組f中元素的梯度,當f為多維時,返回每個維度梯度

      

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM