r語言的創造就是為了統計學而生,因此學習r語言隨便找一本書都能一氣呵成的學習下去。然而,相比r語言來說,python的應用則要廣泛的多了,也因此關於python的參考書目也比r多的太多了,如果沒有目的的學,知識內容豐富的會讓你無從下手。既然我們志在資料分析和作圖,那我們就要術業有專攻,在其中只挑選有利於我們提高資料分析和作圖的部分看。
在講我推薦的書本之前,我想先講一下python資料分析需要掌握哪些知識體系,有了知識體系的輪廓,我們在看魚龍混雜的書本時就能做到有的放矢,不在無關的知識上浪費功夫。
1首先肯定是python基礎知識了,這個是學習任何一門程式語言都避不開的,但是如果我們之前有了其他程式語言的基礎,python就好學的多了。之前沒學過程式設計也不要緊,python很簡單的,我曾見過小學二年級的孩子玩python都很666的,所以說肯定也難不倒我們。
python基礎部分我們需要知道:
(1)字串str,列表list,字典dict,元組tuple和字典set型別變數的定義及其增刪改查操作方法。其中,關於str的操作方法是可以有很大的拓展的,除了python自帶的一些函式外,我們還可以用到正規表示式,關於正規表示式我在文末的資源中也推薦了一本書《精通正規表示式》。
(2)if條件語句,for迴圈和while迴圈很簡單,初中數學就講了,簡單但是很重要。
(3)函式和類class的定義。函式的定義如果接觸過r語言自然不會陌生,但是python是物件導向的,class就是體現python物件導向的特點的,這部分可以看書重點學習,也是python的精髓所在。此外,不要覺得函式定義很簡單,平時我們覺得簡單是因為我們用的都是初階函式,而且只用到了位置引數和預設引數。可以了解了解不定長引數、關鍵字引數和命名關鍵字引數,保證你在使用的時候會把他們的順序攪渾的,哈哈。也可以在書本或網上查查匿名函式和高階函式的用法,這樣學完知識才成體系。
2上邊的只是基礎,接下來如果我們分析的資料需要從網上獲取,那麼學習爬蟲是很有必要的。不要擔心,我為大家準備了python爬蟲大禮包,資源都在後邊的鏈結裡。如果我們的資料是自己做實驗或者野外觀測得到的,可以直接跳到3。
3資料獲取之後我們需要對資料進行清洗,就是對缺失值、重複值和異常值進行處理。在r中,資料的清洗在陣列array和資料框dataframe中進行,非常快速和方便。在python中資料的清洗也模仿了r中的資料清洗形式。numpy和pandas兩個庫就是進行這樣的模仿工作的:numpy中的ndarray陣列模仿了r中的array,使資料能夠向量化操作;而pandas差不多就是r中的dataframe。因此,在學習完python的基礎之後,我們就要學習python中的numpy和pandas兩個庫了。
4資料清洗完之後就是要進行建模分析了,在python中scipy庫和scikit-learn庫就是做這樣的工作的。scipy庫是乙個開源的演算法庫和數學工具包,其與numpy和pandas合稱為python資料分析三劍客。那scikit-learn庫是做什麼的?機器學習。如果我們在資料建模的過程中用到一些演算法,像邏輯回歸、決策樹、樸素貝葉斯、knn、k-means等之類的,在這個庫中就可以呼叫。
5資料分析完之後就是進行資料的呈現了。在r中比較經典的資料視覺化包是ggplot2,而python也有其經典的資料視覺化庫,那就是matplotlib和seaborn。關於matplotlib的使用方法,在文末的資源裡,我給大家提供了《python資料視覺化程式設計實戰》一書,內容很詳盡,可以作為理論來學習,也可以作為cook book來參考。searbon的應用是建立在matplotlib的基礎之上的,文後資源中也有其使用方法,此處不再多述。
《流暢的python》#這本書講的python基礎知識是比較全的,能看完的話收穫定不小
《python程式設計:從入門到實踐》#這本書也是講python基礎知識的,文中寓教於樂,是一種很不錯的編排方式
《利用python進行資料分析(第二版)》#權威的python資料分析書本,它在python資料分析中的地位就相當於《r語言實戰》在r中的地位,從python基礎一直講到資料清洗、資料建模和資料視覺化。這麼好的東西為什麼放在最後,當然是用來壓軸的,哈哈~
Python實現程序資源共享
程序是cpu最小的資源分配的單位。程序之間的資源是不能共享的。但是執行緒之間的資源可以是共享的。下面簡單的介紹兩種方法實現程序之間資源的共享。1 queue 方法 usr bin envpython coding utf 8 from multiprocessing import process,q...
Python中線程資源共享的問題
python中線程全域性變數是共享的,這一點與程序不同,在程序中所有程序之間的資源都是無關的,不共享的,所以在程序中使用程序之間的通訊機制,比如queue。python執行緒中非全域性變數是不共享的,兩個執行緒即便是執行同一函式,但是在函式中的非全域性變數是不相關的,from threading i...
python中程序資源共享之queue
在python中程序之間可以用queue佇列實現共享資源。基本方法 queue.queue maxsize 0 fifo,如果maxsize小於1就表示佇列長度無限 queue.lifoqueue maxsize 0 lifo,如果maxsize小於1就表示佇列長度無限 queue.qsize 返回...