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

来源:https://www.cnblogs.com/chenzhijuan-324/archive/2019/03/23/10585551.html
-Advertisement-
Play Games

Python主要是依靠眾多的第三方庫來增強它的數據處理能力的。常用的是Numpy庫,Scipy庫、Matplotlib庫、Pandas庫、Scikit-Learn庫等。 常規版本的python需要在安裝完成後另外下載相應的第三方庫來安裝庫文件。而若安裝的是Anaconda版本的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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、程式設計思路 在我的三次作業中都採用了類的分層結構,採用逐項匹配,分層求導的思路。 (一)、 第一次作業中構建了Polynimial(多項式)類,在類的構造器中就完成了對非法空格的判斷並對合法表達式進行刪除空格處理。由於第一次作業僅含有帶有繫數的冪函數與常數項,因而我就沒有專門構建針對每一個項的 ...
  • 一,解決類與類之間代碼允餘問題有兩種方案: 1,繼承 2,組合 1,繼承:描述的是類與類之間,什麼是什麼的關係 2,組合:描述的是類與類之間的關係,是一種什麼有什麼關係 一個類產生的對象,該對象擁有一個屬性,這個屬性的值是來自另一個類的對象 二,組合練習: ...
  • 說來慚愧,在很久之前修這門課程的時候總是不能理解面向對象辯證思想的精髓所在,又沒有用軟體開發的標準嚴格要求自己,所以導致寫了一些類C程式後草草收場。時隔多年,課程的風格變化與老師和平臺提供的幫助,加上今年對於Java語言上更熟練的使用,讓我在第一個單元的學習中得到了很多,雖然並不能像大神一樣總結出技 ...
  • C++ 標準:維基百科 C 標準:維基百科 【K&R C】 1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The C Programming Language》的第一版(按照慣例,經典著作一定有簡稱,該著作簡稱為 K&R),書末的參考指南 (Refere ...
  • 一. 系統和JDK版本 系統:Windows10 JDK版本:1.8 二. 配置步驟 1. 右鍵單擊“我的電腦” >> 屬性 >> 高級系統設置 2. 環境變數 3. 系統變數 >>新建 4.新建變數名“JAVA_HOME”,變數值為JDK的安裝路徑 5. 編輯Path環境變數,添加“%JAVA_H ...
  • 背景:人生不可以後悔,但它卻可以轉彎。不知不覺到新的公司上班已經一個多星期了,然而之前面試了好幾家公司都沒有好好總結下;新公司給我的總體印象還不錯,是一家非外包的創業型企業,就是公司是做大數據項目的,之前我是搞Java開發的,然後現在自己hadoop不瞭解、Linux不熟悉、測試用例也沒寫過等,搞得 ...
  • "題目鏈接" 題解: 這個題可以用廣搜來解決,從農夫到牛的走法每次都有三種選擇,定義一個隊列,把農夫的節點加進隊列,然後以這三種走法找牛,隊列先進先出,按順序直到找到牛的位置。 代碼: c++ include include include include using namespace std; ...
  • 很簡單的一款PHP+Ajax+plupload無刷新上傳頭像代碼,相容性很好,可以直接拿來用。你可以自定義各種類型的文件。本實例中只能上傳"jpg", "png", "gif", "jpeg"等圖片文件 引入jQuery庫和plupload上傳組件 plupload單圖片上傳配置 本實例下載:htt ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...