Python基礎學習之Python主要的數據分析工具總結


Python主要是依靠眾多的第三方庫來增強它的數據處理能力的。常用的是Numpy庫,Scipy庫、Matplotlib庫、Pandas庫、Scikit-Learn庫等。

常規版本的python需要在安裝完成后另外下載相應的第三方庫來安裝庫文件。而若安裝的是Anaconda版本的Python,則不需要一個一個安裝第三方庫,可能已經同時安裝了這些庫。

Anaconda是專門應用於科學計算的Python版本。

Numpy庫:表達N維數組的最基本的庫。

Numpy庫是專門為應用於嚴格的數據處理開發的,它提供了一個非常強大的N維數組對象array和實用的線性代數、傅里葉變換和隨機數生成函數,可以存儲和處理大型的矩陣,Scipymatplotlib,pandas庫等均依賴於它。

① 安裝Numpy庫:pip install numpy ,集成安裝方法(anaconda)或者文件安裝方法(先從UCI頁面搜索庫,下載對應版本的文件,使用 pip install <文件名>進行安裝)

② 多維數組:用array函數創建數組,array函數接收一切序列類型的對象(listtuple,其他數組)  import numpy as np

        A=np.array(列表、元組或數組)

       創建特殊函數:import numpy as np

                    B=np.ones(n,m)C=np.zeros(n,m) ,I=np.eye/identify(n)

SciPy庫:提供了真正的矩陣,以及基於矩運算的對象和函數,Scipy包含的功能有最優化、線性代數、積分、插值、擬合、特殊函數、快速傅里葉變換、信息處理和圖像處理、常微分方程求解和其他科學和工程常用的計算。

注意:Scipy庫依賴於Numpy庫,需先安裝Numpy

 例:使用Scipy求解線性方程組的方法:

import scipy

from scipy import linalg

a=scipy.mat('[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6]')

b=scipy.mat('[8;9;-5;0]')

solve=linalg.solve(a,b)

print(solve)      #運行結果輸出值矩陣

[ [3.]

[-4.]

[-1.]

[1.] ]

該方程的另一解為:使用LU求解多個線性方程

from numpy import *

import scipy.linalg as s1

A=array([[2,1,-5,1],[1,-3,0,-6],[0,2,-1,2],[1,4,-7,6]])

b=array([8,9,-5,0])

bi=b.reshape(-1,1)

[LU,piv]=s1.lu_factor(A)

print(LU,piv)

xi=s1.lu_solve((LU,piv),bi)

print(xi)

#得到運行結果:[[ 2.          1.         -5.          1.        ]

                           [ 0.5        -3.5         2.5        -6.5       ]

                            [ 0.5        -1.         -2.         -1.        ]

                           [ 0.         -0.57142857 -0.21428571 -1.92857143]]                [0 1 3 3]

[[ 3.]

 [-4.]

 [-1.]

 [ 1.]]

Scipy 中,分解LU的方法有兩種:1.標准方法是scipy.linalg.lu 該方法返回三個矩陣L,U,P

2.方法lu_factorlu_solve結合起來使用,LU一起存儲在n*n的數組中,存儲序列矩陣P的信息只需要一個n整數向量即軸向量來完成。

 3.Matplotlib庫:python的一個2D繪圖庫,它以各種硬拷貝格式和跨平台的交互式環境生成出版質量級別的圖形。應用: 使用Matplotlib可以實現數據的可視化

  1:使用Matplotlib進行畫圖的一些基本代碼:

iimport matplotlib.pyplot as plt

import numpy as np

x=np.linspace(0,10,1000)   #設置自變量格式 其中linspace(0,10,1000)表示x由平均分布在010之間的1000個點所組成

y=np.sin(x)+1    #設置因變量y

z=np.cos(x**2)+1       #設置另一因變量z

plt.figure(figsize=(8,4))     #設置圖像大小

plt.plot(x,y,label="sinx+1",color='red',linewidth=2)    #作圖(x,y,設置標簽格式

plt.plot(x,z,label="cosx^2+1")  #作圖(x,z

plt.xlabel('Time(s)')  #設置x軸名稱

plt.ylabel('Volt')      #設置y軸名稱

plt.title('A simple Example')   #設置表格標題

plt.ylim(0,2.2)      #顯示的y軸范圍

plt.legend()   #顯示圖例

plt.show()      #顯示作圖結果

 運行上述代碼,可以得到如下圖:(注意:該圖可以保存為圖片格式,保存的圖片質量幾乎滿足各種版本要求)

 4.pandas 庫:是包含高級的數據結構和精巧的分析工具,支持SQL的數據增、刪、改、查操作,並包含很多處理函數。

 1Pandas的數據結構series

 Series 由一組數據(各種Numpy數據類型)以及一組與之有關的數據標簽(即索引)組成。它的字符串的表現形式為:索引左邊  值右邊

 例1. 創建Series對象:

 from pandas import Series

 obj_list=[1,2,3,4,5]

 obj_tuple=(1.2,2.5,3.3,4.8,5.4)

 obj_dict={'Tom':[16,'boy'],'Max':[12,'boy'],'Julia':[18,'girl']}

 series_list=Series(obj_list)

 series_tuple=Series(obj_tuple,index=['a','b','c','d','e'])

 series_dict=Series(obj_dict)

 print("1)通過list建立Series:")

 print(series_list)

 print('(2)通過tuple建立series')

 print(series_tuple)

 print("(3)通過dict建立series:")

 print(series_dict)

運行結果為:

 1)通過list建立Series:

 0    1                 #注意:當沒有給出索引值得時候,series0開始自動創建索引

 1    2

 2    3

 3    4

 4    5

 dtype: int64

 (2)通過tuple建立series

 a    1.2

 b    2.5

 c    3.3

 d    4.8

 e    5.4       dtype: float64

 (3)通過dict建立series:

 Tom       [16, boy]

 Max       [12, boy]

 Julia    [18, girl]        dtype: object

 (2)Pandas的數據結構DataFrame

 DataFrame pandas的主要數據結構之一,是一種帶有二維標簽的二維對象,DataFrame結構的數據有一個行索引和列索引,且每一行的數據格式可能是不同的。

 例:DataFrame的創建和一些基本操作:

 from pandas import DataFrame    #pandas庫中引用DataFrame

 from pandas import Series      #pandas庫中引用series

 obj={'name':['Tom','Peter','Lucy','Max','Anna'],'age':['17','23','44','27','36'],

           'status':['student','student','doctor','clerk','performer']}

 series_dict1=Series([1,2,3,4,5],index=['a','b','c','d','e'])

 series_dict2=Series([6,7,8,9,10],index=['a','b','c','d','e'])

 print(series_dict2)

 df_obj=DataFrame(obj)#創建dataframe對象

 print(df_obj)

 df_obj2=DataFrame([series_dict1,series_dict2])

 print(df_obj2)

 print('---查看前幾行數據,默認5---')

 print(df_obj.head())

 print("-----提取一列-----")

 print(df_obj.age)

 print("------添加列-----")

 df_obj['gender']=['m','m','f','m','f']   #直接用鍵來添加

 print(df_obj)

 print('-----刪除列-----')

 del df_obj['status']

 print(df_obj)

 print("-----轉置-----")

 print(df_obj2.T)      

 運行結果:

 a     6     #返回series_dict2

 b     7

 c     8

 d     9

e    10

 dtype: int64

       name age     status         #dataframe數據結構

 0    Tom  17    student

 1  Peter  23    student

 2   Lucy  44     doctor

 3    Max  27      clerk

 4   Anna  36  performer

     a  b  c  d   e

 0  1  2  3  4   5

 1  6  7  8  9  10

 --查看前幾行數據,默認5---

      name age     status

 0    Tom  17    student

 1  Peter  23    student

 2   Lucy  44     doctor

 3    Max  27      clerk

 4   Anna  36  performer

 -----提取一列-----

 0    17

 1    23

 2    44

 3    27

 4    36

 Name: age, dtype: object

 ------添加列-----

      name age     status gender

 0    Tom  17    student      m

 1  Peter  23    student      m

 2   Lucy  44     doctor      f

 3    Max  27      clerk      m

 4   Anna  36  performer      f

 -----刪除列-----

       name age gender

 0    Tom  17      m

 1  Peter  23      m

 2   Lucy  44      f

 3    Max  27      m

4   Anna  36      f

 -----轉置-----

     0   1

a  1   6

 b  2   7

 c  3   8

 d  4   9

 e  5  10

 


免責聲明!

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



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