從零開始Python3做數據分析

      網友投稿 675 2025-03-31

      歡迎來到Python數據分析的世界!如今,Python已成為數據分析和數據科學事實上的標準語言和標準平臺之一。我們將為讀者展示一張思維導圖,圖1-1中將給出Python生態系統為數據分析師和數據科學家提供的各種程序庫。NumPy、SciPy、Pandas和Matplotlib庫共同構成了Python數據分析的基礎,當前它們已經成為SciPy Stack 1.0的組成部分。在本文中,我們不僅會學習如何安裝SciPy Stack 1.0和Jupyter Notebook,還將編寫一些簡單的數據分析代碼,為后面的學習做好熱身。

      下面是Python生態系統為數據分析師和數據科學家提供的常用程序庫。

      ●NumPy:這是一個通用程序庫,不僅支持常用的數值數組,同時提供了用于高效處理這些數組的函數。

      ●SciPy:這是Python的科學計算庫,對NumPy的功能進行了大量擴充,同時也有部分功能是重合的。Numpy和SciPy曾經共享基礎代碼,后來分道揚鑣了。

      ●Pandas:這是一個用于數據處理的程序庫,不僅提供了豐富的數據結構,同時為處理數據表和時間序列提供了相應的函數。

      ●Matplotlib:這是一個2D繪圖庫,在繪制圖形和圖像方面提供了良好的支持。當前,Matplotlib已經并入SciPy中并支持NumPy。

      ●IPython:這個庫為Python提供了強大的交互式Shell,也為Jupyter提供了內核,同時還支持交互式數據可視化功能。我們將在本文稍后介紹IPython shell。

      ●Jupyter Notebook:它提供了一個基于Web的交互式shell,可以創建和共享支持可實時代碼和可視化的文檔。Jupyter Notebook通過IPython提供的內核支持多個版本的Python。本文稍后將會為讀者進一步介紹Jupyter Notebook。

      對于本文而言,當需要安裝軟件時,我們會在恰當的時機給出相應的安裝說明。在安裝軟件的過程中遇到困難或者不能斷定最佳方案時,讀者可以參考圖1-1,這里提供了尋找解決問題所需輔助信息的指南。

      圖1-1

      本文將涉及以下主題。

      ●安裝Python 3

      ●將IPython用作shell

      ●閱讀手冊頁

      ●Jupyter Notebook

      ●NumPy數組

      ●一個簡單的應用

      ●何處尋找幫助和參考資料

      ●列出Python庫中的模塊

      ●利用matplotlib可視化數據

      1.1 安裝Python 3

      本文所用軟件都是基于Python 3的,所以必須首先安裝Python 3。不過,對于某些操作系統而言,Python 3是默認安裝的。Python具有多種實現,其中包括具有商業版權的實現和發行版。在本文中,我們只關注標準Python實現,因為它與NumPy完全兼容。

      提示:

      讀者可以從https://www.python.org/download/頁面下載Python 3.5.x。在這個網站上,我們可以找到為Windows和Mac OS X系統開發的安裝程序,以及為Linux、UNIX和Mac OS X系統提供的源碼包。我們可以從https://docs.python.org/3/using/index.html上找到在各種操作系統上安裝和使用Python的相關說明。

      本文需要安裝的軟件,在Windows、各種Linux發行版本和Mac OS X系統上都有相應的二進制安裝程序。當然,如果讀者愿意,也可以使用相應的源代碼發行包。對于Python,要求其版本為3.5.x或更高。Python 2.7版本的支持與維護工作已經從2015年延續至2020年,之后,我們不得不遷移到Python 3。

      1.1.1 安裝數據分析程序庫

      下面開始介紹如何在Windows、Linux和Mac OS X上安裝和設置NumPy、SciPy、Pandas、Matplotlib、IPython和Jupyter Notebook。下面來詳細了解一下這個過程。在本文中,我們將使用pip3來安裝這些庫。因為從3.4版本起,pip3已經默認包含在Python的安裝程序中了。

      1.1.2 Linux平臺或Mac OS X平臺

      為了安裝這些基礎的程序庫,可以運行以下命令。

      1.1.3 Windows平臺

      在撰寫本文時,我們在Windows 10虛擬機上安裝了以下軟件,作為安裝這些程序庫的先決條件。

      ●Python 3.6。

      ●Microsoft Visual C++ Build Tools 2015。

      下載并安裝適用于Windows平臺的、預編譯好的NumPy和SciPy二進制文件。

      ●我們下載了numpy-1.12.0 + mkl-cp36-cp36m-win_amd64.whl和scipy-0.18.1-cp36- cp36m-win_amd64.whl。

      ●下載完成后,執行命令pip3 install Downloads umpy-1.12.0 + mkl-cp36-cp36m-win_amd64.whl和pip3 install Downloads\scipy-0.18.1-cp36-cp36m-win_amd64.whl。

      安裝上述軟件后,為了安裝其余的基礎程序庫,可以運行以下命令。

      小技巧

      使用這些命令安裝Jupyter時,要先安裝所有必需的軟件包,如Notebook和IPython。

      1.2 將IPython用作shell

      我們知道,科學家、數據分析師和工程師經常需要進行實驗,而IPython正是為實驗而生的。對于IPython提供的交互式環境,明眼人一看就知道它與MATLAB、Mathematica和Maple非常接近。

      下面是IPython shell的一些特性。

      ●Tab補全功能(Tab completion),可以幫助查找命令

      ●歷史記錄機制

      ●行內編輯

      ●利用%run調用外部Python腳本

      ●訪問系統命令

      ●訪問Python的調試工具和分析工具

      下面給出IPython shell的使用方法。

      ●啟動會話:要想使用IPython啟動會話,需要在命令行中輸入以下指令。

      小技巧

      退出IPython shell時,可以使用quit()函數或者Ctrl+D組合鍵。

      ●保存會話:有時我們可能想要恢復之前做過的實驗。對于IPython來說,這很容易,只要保存了會話,就可以供將來繼續使用,具體命令如下。

      使用下列命令可以關閉記錄功能。

      ●執行系統的shell命令:在默認情況下,IPython允許通過在命令前面追加“!”號來執行系統的shell命令。舉例來說,我們輸入下面的命令將會得到當前日期。

      事實上,任何前置了“!”號的命令行都將發送給系統的shell來處理。此外,可以通過如下方法來存儲命令的輸出結果。

      ●顯示歷史上用過的命令:可以利用%hist命令來顯示之前用過的命令,例子如下。

      這在命令行接口(Command Line Interface,CLI)環境中是一種非常普遍的功能。此外,我們還可以用-g開關在歷史命令中進行搜索,例子如下。

      在上面的過程中,我們使用了一些所謂的魔力函數(magic functions),這些函數均以“%”開頭。當魔力函數單獨用于一行時,就可以省略前綴“%”。

      1.3 學習手冊頁

      當使用IPython導入相應的程序庫后,可以通過help命令打開NumPy函數的手冊頁——即使不知道該函數的確切名稱。我們可以先輸入幾個字符,然后利用Tab鍵就可以自動補全剩下的字符。下面以arange()函數為例,說明如何查閱與其有關的資料。

      這里給出兩種翻閱相關信息的方法。

      調用help函數:輸入help命令(并輸入函數名中的前幾個字符,再按Tab鍵。這時將出現一個函數列表(見圖1-2),我們可以通過方向鍵從函數名列表中進行選擇,然后按Enter鍵進行確認),最后按Enter鍵盤,結束help函數的調用。

      通過問號進行查詢:另一種方法是在函數名后面加上問號,當然,前提條件是我們已經知道函數名,好處是不必輸入help命令,例子如下。

      圖1-2

      Tab補全功能依賴于readline,所以務必確保先前已經安裝了該軟件。如果沒有安裝,可以使用pip完成安裝,具體命令如下。

      利用問號,我們可以從文檔字符串(docstrings)中獲取所需信息。

      1.4 Jupyter Notebook

      upyter Notebook以前被稱為IPython Notebooks,它提供了一種以特殊格式創建和共享具有文本、圖表和Python代碼的網頁的工具。

      很多時候,notebook都是用于演示Python軟件,或者用作一款教學工具。我們可以單純使用Python代碼或者通過特殊的notebook格式來導入和導出notebook。另外,notebook既可以在本機上跑,也可以放到專用的notebook服務器上在線使用。某些云計算解決方案(如Wakari和PiCloud)還支持在云中運行notebook。云計算的主題將在第11章中加以介紹。

      從零開始用Python3做數據分析

      為了使用Jupyter Notebook啟動一個會話,讀者可以使用如下命令。

      這時將啟動notebook服務器并打開一個網頁,顯示該命令所在文件夾的內容。然后,你可以在Python 3中選擇New | Python 3菜單項來啟動一個新的notebook。

      你也可以打開本文的代碼包中提供的ch-01.ipynb。ch-01是一個notebook文件,其中存放了本文中簡單應用程序的代碼。

      1.5 NumPy數組

      安裝好NumPy后,就可以來看NumPy數組了。與Python中的列表相比,進行數值運算時NumPy數組的效率要高得多。事實上,NumPy數組是針對某些對象進行了大量的優化工作。

      完成相同的運算時,與Python代碼相比,NumPy代碼用到的顯式循環語句明顯要少,因為NumPy是基于向量化的運算。還記得高等數學中標量和向量的概念嗎?例如,數字2是一個標量,計算2+2時,進行的是標量加法運算。通過一組標量,我們可以構建出一個向量。用Python編程的術語來說,我們得到了一個一維數組。當然,這個概念可以擴展至更高的維度。實際上,針對兩個數組的諸如加法之類的運算,可以將其轉化為一組標量運算。使用純Python時,為了完成該操作,可以使用循環語句遍歷第一個數組中的每個元素,并與第二個數組中對應的元素相加。然而,在數學家眼里,這種方法過于繁瑣。數學上,可以將這兩個向量的加法視為單一操作。實際上,NumPy數組也可以這么做,而且它用低級C例程針對某些操作進行了優化處理,使得這些基本運算效率大為提高。關于NumPy數組將在第2章中詳細介紹。

      1.6 一個簡單的應用

      假設要對向量a和b進行求和。注意,這里“向量”的含義是數學意義上的,即一個一維數組。在第4章中,將遇到一種表示矩陣的特殊NumPy數組。向量a存放的是整數0~n?1的2次冪。如果n等于3,那么a保存的是0、1或4。向量b存放的是整數0~n的3次冪,所以如果n等于3,那么向量b等于0、1或者8。如果使用普通的Python代碼,該怎么做呢?

      在我們想出了一個解決方案后,可以拿來與等價的NumPy方案進行比較。

      下面的函數沒有借助NumPy,而是使用純Python來解決向量加法問題。

      下面是利用NumPy解決向量加法問題的函數。

      注意,numpysum()無需使用for語句。此外,我們使用了來自NumPy的arange()函數,它替我們創建了一個含有整數0~n的NumPy數組。這里的arange()函數也是從NumPy導入的,所以它加上了前綴numpy。

      現在到了真正有趣的地方。我們在前面講過,NumPy在進行數組運算時,速度是相當快的。可是到底有多快呢?下面的程序代碼將為我們展示numpysum()和pythonsum()這兩個函數的實耗時間,這里以μs(微秒)為單位。同時,它還會顯示向量sum最后面的兩個元素值。下面來看使用Python和NumPy能否得到相同的答案。

      對于1000個、2000個和4000個向量元素,程序的結果如下。

      顯而易見,NumPy的運行速度比等價的常規Python代碼要快很多。有一件事情是肯定的:無論是否使用NumPy,計算結果都是相同的。但是結果的顯示形式還是有所差別的,numpysum()函數給出的結果不包含逗號。為什么會這樣?別忘了,我們處理的不是Python的列表,而是一個NumPy數組。有關NumPy數組的更多內容,將在第2章中詳細介紹。

      1.7 從何處尋求幫助和參考資料

      表1-1列出了在本文中討論過的Python數據分析庫的文檔網站。

      表1-1

      流行的軟件開發論壇Stack Overflow上也有數以百計的NumPy、SciPy、Pandas、Matplotlib、IPython和Jupyter Notebook方面的討論。如果讀者對這些內容感興趣,建議進一步學習。

      如果你遇到了比較棘手的問題,或者想要持續關注這些程序庫的開發進展,可以訂閱相應的討論郵寄列表。訂閱后,每天收到的數量不一的郵件,開發者會積極報告這些庫的開發進展并熱心回答其中的問題。

      對于IRC用戶,可以在irc://irc.freenode.net找到一個相關的頻道,雖然該頻道的名字是#scipy,但是這并不妨礙我們提問NumPy方面的問題,因為SciPy用戶一般比較熟悉NumPy,畢竟SciPy是以NumPy為基礎的。在這個SciPy頻道中,通常有50多位成員保持在線。

      1.8 查看Python庫中包含的模塊

      ch-01.ipynb文件包含用于查看NumPy、SciPy、Pandas和Matplotlib庫中的模塊的代碼。現在,讀者不用擔心這些代碼的含義,只要嘗試運行一下它們就行了。您可以修改其中的代碼以查看其他庫中的模塊。

      本文摘自《Python數據分析(第2版)》

      《Python數據分析(第2版)》

      [美]阿曼多·凡丹戈(Armando Fandango)?著

      點擊封面購買紙書

      暢銷書升級版,基于Python3。

      本書教新手用Python語言分析數據,發揮Python在數據可視化方面的優勢,引導讀者成為數據分析高手。全書從數據檢索、清洗、操作、可視化、存儲復雜的分析和建模等方面介紹,重點關注開源模塊,如NumPy、SciPy、matplotlib、pandas、IPython、Cython、scikit-learn及NLTK。本書還包括數據可視化、信號處理、時間序列分析、數據庫、預測分析和機器學習等主題。

      本文轉載自異步社區

      python 算法

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:快速刪除數據表格中的空白列的方法(怎樣刪除單列表格中的空白格)
      下一篇:不能啟動對象的源應用程序(wps顯示不能啟動此對象的源應用程序)
      相關文章
      国产偷v国产偷v亚洲高清| 亚洲国语在线视频手机在线| 精品亚洲成在人线AV无码| 91麻豆国产自产在线观看亚洲| 亚洲成a人片在线观看中文!!! | jzzijzzij在线观看亚洲熟妇| 亚洲国产精品成人精品小说| 亚洲精品中文字幕无乱码| 77777_亚洲午夜久久多人| 久久久亚洲欧洲日产国码二区 | 久久久久久亚洲精品| 久久99国产亚洲高清观看首页| 亚洲精品无码日韩国产不卡?V| 国产偷国产偷亚洲高清在线| 亚洲欧洲国产视频| 亚洲男女性高爱潮网站| 亚洲ⅴ国产v天堂a无码二区| 亚洲欧洲日韩不卡| 日本久久久久亚洲中字幕| 亚洲美女免费视频| 亚洲中文字幕久久精品无码2021| 亚洲乱码卡一卡二卡三| 亚洲中文字幕久久精品无码A | 亚洲熟女一区二区三区| 亚洲中文字幕无码永久在线| 国产亚洲3p无码一区二区| 亚洲午夜精品久久久久久人妖| 亚洲自偷自拍另类图片二区| 亚洲伊人久久精品| 亚洲va在线va天堂成人| 亚洲区视频在线观看| 亚洲国产综合在线| 亚洲精品无码av中文字幕| 亚洲av区一区二区三| 亚洲女子高潮不断爆白浆| 亚洲熟妇av一区二区三区| 亚洲a无码综合a国产av中文| 亚洲人成日本在线观看| 337p日本欧洲亚洲大胆精品555588 | 成人亚洲综合天堂| 亚洲欧洲校园自拍都市|