本文目錄一覽:
- 1、怎樣才能學好python語言?
- 2、python與php的區別 專家解析python與php的四大區別
- 3、Python有哪些技術上的優點?比其他語言好在哪兒?
- 4、數據分析員用python做數據分析是怎麼回事,需要用到python中的那些內容,具體是怎麼操作的?
- 5、楊淑娟python老師講得怎麼樣
- 6、python能做什麼
怎樣才能學好python語言?
第一:道——明確目標
其實很多人在學習Python之前很少想這個,因為很多人說:現在Python很火呀,所以我么需要學。這個其實跟你自己沒有什麼關係,例如:你曾經想做一個網站不會開發,現在可以做了,現在Python很火併且你也要學來找工作,未來Python很火,我具備了Python的技能會不錯。
在一生中,我們或多或少總會卡到目標上。在一些我們擅長的領域,我們會有明確的目標,並且積極指導別人:親!幹事之前,你要先定目標啊!
王健林的小目標,大家在朋友圈也都看過了,他會定先掙它一個億。
第二:法——做好你學習Python的系統規劃
1.目前市場需求主流的崗位里,你得選擇一個其中你目前看來可以學,並且最敢興趣學習的方向;
2.在方向選擇好後,對照招聘網站:拉勾、智聯、Boss直聘等網站的崗位要求,進行學習內容的統計與大概的記錄;
3.分模塊的計劃你學習這個模塊的時間和完成的大概目標;
4.列出你可能出現的學習誤差與為之準備的應對方案;
好了,你發現沒有,其實任何學習重要的不是有什麼資料,核心是如何學,學多久,有沒有時間限制,遇到過自己多次學習某個內容或者其他人學習某個內容,最關鍵的一點是在起步階段,開始屬於激情期,激情在前面釋放越多,後面的持續力就很弱,好了這就是關於學習計劃。
廢話說多了,那我們來看看一個普適性的學習Python的流程;
1天——下載並安裝好學習環境:到網站上下載一個python3.0以上的版本。我建議初學者,不要下載具有IDE功能的集成開發環境,比如Eclipse插件等。
4周——下載一些python的學習文檔,比如《簡明Python教程》,《笨辦法學Python》等等。通過學習語法,掌握python中的關鍵字語法,函數語法,數學表達式、變數、數據結構、語法等等等
1. 了解Python是什麼,都能做些什麼?
2. 知道什麼是變數、演算法、解釋器
3. Python基本數據類型
4. 列表和元組的操作方法
5. 字元串操作方法
6. 基本的字典操作方法
7.任何知識它的基礎知識都是有些枯燥的,現在我們就可以動手來做一些邏輯層面的東西了。掌握 if、else、elif、while、for、continue、break和列表推導式等這些語句的使用,還有程序中的異常處理。
2周——看完基礎後,就是做一些小項目鞏固基礎,python具備很好的交互學習模式,對於書本上的例子我們可以通過交互平台進行操練,通過練習加深印象,達到學習掌握的目的。
2周——通過以上三個步驟的學習後,我們大致掌握了python的常用方法、關鍵字用法以及函數語法等。接下去的學習上,我們就可以著手學習常用模塊的使用, 比如os,os.path,sys,string模塊等。我們可以在交互環境中先熟悉使用其中的函數,如果遇到函數的使用上的問題,可以參考python 安裝後的自帶chm幫助文件。
2周——為了更好得掌握python,我們的學習不能只是停留在學習一些語法或者api階段。在此階段中,我們可以嘗試用python解決我們項目中遇到的一 些問題,如果項目不是用python開發的,那我們可以想想能不能用python製作一些項目組可以使用的一些工具(utility),通過這些工具簡化 項目組成員的任務,提高我們的工作效率。如果沒有項目,我們也可以自己找些題目來自己練習練習。
2周——Python庫是Python的精華所在,可以說Python庫組成並且造就了Python,Python庫是Python開發者的利器,所以學習Python庫就顯得尤為重要:
2周——經過以上鍛煉後,我們的python知識水平肯定是越來越高。接下去的學習,我們就要更上一層樓。為了學以致用,真正能應用於項目開發或產品開發,我 們還必須學習企業應用開發中必須要掌握的網路和資料庫的知識。在此的學習就不光是python語言本身的學習了,如果之前沒有學習和掌握很網路和資料庫知 識,在此階段我們可以藉此機會補習一把。
3周——到此階段,我們已經是真正入門了。在接下去的工作中,就是要快速地通過我們的所學來服務項目了。在此階段,我們除了掌握python自帶的模塊外,我 們最好在掌握一些業界廣泛使用的開源框架,比如twisted、peak、django、xml等。通過熟練使用它們,達到閃電開發,大大節省項目寶貴時間。
《Python 核心編程》,介紹了 Python 的一些具體領域的開發方法;
《Python 網路數據採集》,很簡單的爬蟲入門書;
《利用 Python 進行數據分析》,介紹了 Pandas 和 NumPy 的用法;
《Flask Web 開發》,如何用 Flask 寫一個博客。
第三:術——你具體的學習手段
1.每天你計劃學習多少時間?例如一天必須學2小時,每天堅持;
2.每個階段的計劃拖延時間不能高於多少時間?
3.如果一個階段不順利如何調整?
其實很多時候,並不是資料不夠多,而是本身的學習思路和計划出現了問題,那麼其實最後學習Python的結果會變成:懂得了很多道理,收集了很多資料,依然學不好Python。
下面我們推薦6本高分書籍給大家,希望大家學習愉快:
1.Python編程:從入門到實踐
豆瓣評分:8.8
內容簡介:本書是一本針對所有層次的Python 讀者而作的Python 入門書。全書分兩部分:第一部分介紹用Python 編程所必須了解的基本概念,包括matplotlib、NumPy 和Pygal 等強大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內容;第二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的Python 2D 遊戲開發如何利用數據生成互動式的信息圖,以及創建和定製簡單的Web 應用,並幫讀者解決常見編程問題和困惑。
豆瓣書友推薦:很好的入門書,簡潔全面,適合小白。learning python之類大磚頭太不友好。這本雖然有些地方講得不深入,但是對新手友好。
————————————————
2.”笨辦法”學Python
豆瓣評分:8.0
內容簡介:本書是一本Python入門書籍,適合對計算機了解不多,沒有學過編程,但對編程感興趣的讀者學習使用。這本書以習題的方式引導讀者一步一步學習編程,從簡單的列印一直講到完整項目的實現,讓初學者從基礎的編程技術入手,最終體驗到軟體開發的基本過程。
Zed Shaw完善了這個堪稱世上最好的Python學習系統。只要跟著學習,你就會和迄今為止數十萬Zed教過的初學者一樣獲得成功。
這本書會讓你的每一分鐘投入都有回報。Python是世界上最強大、最受歡迎的編程語言之一,很快你就會成為一名Python程序員。
豆瓣書友推薦:花了一周的時間看完,在以前的基礎上零零碎碎學了一些新的東西,還算是有所收穫,但是前面講的很基礎很簡單,到ex40之後突然難度增加不是很懂在講些什麼。
————————————————
3.Python學習手冊
豆瓣評分:8.1
內容簡介:《Python學習手冊(第3版)》講述了:Python可移植、功能強大、易於使用,是編寫獨立應用程序和腳本應用程序的理想選擇。無論你是剛接觸編程或者剛接觸Python,通過學習《Python學習手冊(第3版)》,你可以迅速高效地精通核心Python語言基礎。讀完《Python學習手冊(第3版)》,你會對這門語言有足夠的了解,從而可以在你所從事的任何應用領域中使用它。
豆瓣書友推薦:用了兩周的時間將這本書啃了一下,還有200多頁的電子版沒看,但還是忍不住先來評論。既是總結自己,也想幫助別人。
本書總評:
優點:解釋詳細,例子豐富;關於Python語言本身的講解全面詳盡而又循序漸進不斷重複,同時詳述語言現象背後的機制和原理;除語言本身,還包含編程實踐和設計以及高級主題。
缺點:有些厚;翻譯不佳;代碼練習題很少;
————————————————
4.Python基礎教程
豆瓣評分:8.0
內容簡介:本書是經典教程的全新改版,作者根據Python 3.0版本的種種變化,全面改寫了書中內容,做到既能「瞻前」也能「顧後」。本書層次鮮明、結構嚴謹、內容翔實,特別是在最後幾章,作者將前面講述的內容應用到了10個引人入勝的項目中,並以模板的形式介紹了項目的開發過程。本書既適合初學者夯實基礎,又能幫助Python程序員提升技能,即使是 Python方面的技術專家,也能從書里找到令你耳目一新的東西。
豆瓣書友推薦:寫得挺生動親民的,很好的入門書。
————————————————
5.Python核心編程
豆瓣評分:8.0
內容簡介:學習專業的Python風格、最佳實踐和好的編程習慣;
·加強對Python對象、內存模型和Python面向對象特性的深入理解;
·構建更有效的Web、CGI、互聯網、網路和其他客戶端/伺服器架構應用程序及軟體;
·學習如何使用Python中的Tkinter和其他工具來開發自己的GUI應用程序及軟體;
·通過用C等語言編寫擴展來提升Python應用程序的性能,或者通過使用多線程增強I/0相關的應用程序的能力;
·學習Python中有關資料庫的API,以及如何在Python中使用各種不同的資料庫系統,包括MySQL、Postgres和 SQLite。
豆瓣書友推薦:了解Python語言方方面面的不錯選擇,雖然版本有些舊,對於較晚接觸Py的人來說,一個「副作用」是可以更多地了解Py的過去。
————————————————
6.流暢的Python
豆瓣評分:9.5
內容簡介:本書由奮戰在Python開發一線近20年的Luciano Ramalho執筆,Victor Stinner、Alex Martelli等Python大咖擔綱技術審稿人,從語言設計層面剖析編程細節,兼顧Python 3和Python 2,告訴你Python中不親自動手實踐就無法理解的語言陷阱成因和解決之道,教你寫出風格地道的Python代碼。
python與php的區別 專家解析python與php的四大區別
1、輸出。
Python: print 默認換行,不換行要加逗號。
PHP: echo 可以輸出多個變數;print ()只輸出一個變數,且成功返回值為1,失敗為0;print_r() 只輸出數組;die() 先輸出,後關機;printf() 格式化輸出字元串;var_dump()可以判斷一個變數的類型與長度,並輸出變數的數。
2、數據類型。
PHP:七個數據類型:String,Integer,Float,Boolean,Array,Object,NULL
Python:五個標準的數據類型:Number,String,List,Tuple,Dictionary 其中包括Numberint,long,float,complex
3、訪問許可權。
PHP:三種訪問許可權,由高到低為public,protected,private
Python: _foo代表不能直接訪問的類屬性,需要通過類提供的介面訪問;__foo代表類的私有成員;__foo__特殊方法專用的標識
4、定義變數和方法。
PHP: 弱類型語言,用$定義變數,一般情況下變數引用變數時也要帶著$(區別於Java), 在類中定義變數時還要加var ,定義方法時 function test (){} 要用function聲明。
Python:弱類型語言,定義變數時直接寫,除了訪問許可權修飾符不需要加別的。定義方法時 def __init__(self,name): 要用def聲明,self是必須要加的常量,代表該類的對象,方法體不用{}。
Python有哪些技術上的優點?比其他語言好在哪兒?
Python有哪些技術上的優點
1. 面向對象和函數式
從根本上講,Python是一種面向對象的語言。它的類模型支持多態、運算符重載和多重繼承等高級概念,並且以Python特有的簡潔的語法和類型為背景,OOP十分易於使用。事實上,即使你不懂這些術語,仍會發現學習Python比學習其他OOP語言要容易得多。
除了作為一種強大的代碼組織和重用手段以外,Python的OOP本質使它成為其他面向對象系統語言的理想腳本工具。例如,通過適當的粘接代碼,Python程序可以對C++、Java和C#的類進行子類的定製。
OOP只是Python的一個選擇而已,這一點非常重要。即使不能立馬成為一個面向對象高手,但你同樣可以繼續深入學習。就像C++一樣,Python既支持面向對象編程也支持面向過程編程的模式。如果條件允許,其面向對象的工具可以立即派上用場。這對策略開發模式十分有用,該模式常用於軟體開發的設計階段。
除了最初的過程式(語句為基礎)和面向對象(類為基礎)的編程範式,Python在最近幾年內置了對函數式編程的支持——一個多數情況下包括生成器、推導、閉包、映射、裝飾器、匿名lambda函數和第一類函數對象的集合。這是對其本身OOP工具的補充和替代。
2. 免費
Python的使用和分發是完全免費的。就像其他的開源軟體一樣,例如,Tcl、Perl、Linux和Apache。你可以從Internet上免費獲得Python的源代碼。你可以不受限制地複製Python,或將其嵌入你的系統或者隨產品一起發布。實際上,如果你願意的話,甚至可以銷售它的源代碼。
但請別誤會:「免費」並不代表「沒有支持」。恰恰相反,Python的在線社區對用戶需求的響應和商業軟體一樣快。而且,由於Python完全開放源代碼,提高了開發者的實力,併產生了一個很大的專家團隊。
儘管研究或改變一種程序語言的實現並不是對每一個人來說都那麼有趣,但是當你知道如果需要的話可以做到這些,該是多麼的令人欣慰。你不需要去依賴商業廠商的智慧,因為最終的文檔和終極的凈土(源碼)任憑你的使用。
Python的開發是由社區驅動的,是Internet大範圍的協同合作努力的結果。Python語言的改變必須遵循一套規範而有約束力的程序(稱作PEP流程),並需要經過規範的測試系統進行徹底檢查。正是這樣才使得Python相對於其他語言和系統可以保守地持續改進。
儘管Python 2.X和Python 3.X版本之間的分裂有力並蓄意地破壞了這項傳統,但通常它仍然體現在Python的這兩個系列內部。
3. 可移植
Python的標準實現是由可移植的ANSI C編寫的,可以在目前所有主流平台上編譯和運行。例如,如今從掌上電腦(PDA)到超級計算機,隨處可見 Python的運行。Python可以在下列平台上運行(這裡只是部分列表):
Linux和UNIX系統
微軟Windows(所有現代版本)
Mac OS(包括OS X 和經典版)
BeOS、OS/2、VMS和QNX
實時操作系統,例如VxWorks
Cray超級計算機和IBM大型機
運行Palm OS、PocketPC和Linux的PDA
運行 Symbian OS和Windows Mobile 的行動電話
遊戲終端和iPod
運行谷歌安卓系統和蘋果iOS系統的平板和智能手機
以及更多
除了語言解釋器本身以外,Python發行時自帶的標準庫和模塊在實現上也都儘可能地考慮到了跨平台的移植性。此外,Python程序自動編譯成可移植的位元組碼,這些位元組碼在已安裝兼容版本Python的平台上運行的結果都是相同的。
這些意味著Python程序的核心語言和標準庫可以在Linux、Windows和其他帶有Python解釋器的平台上無差別地運行。大多數Python外圍介面都有平台相關的擴展(例如COM支持Windows),但是核心語言和庫在任何平台都一樣。
就像之前我們提到的那樣,Python還包含了一個叫作tkinter(Tkinter的2.X版本)的Tk GUI工具包,它可以使Python程序實現功能完整的,無須做任何修改即可在所有主流GUI桌面平台運行的用戶圖形界面。
4. 功能強大
從語言特性的角度來看,Python是一個混合體。它豐富的工具集使它介於傳統的腳本語言(如Tcl、Scheme和Perl)和系統語言(如C、C++和Java)之間。Python提供了所有腳本語言的簡單和易用性,並且具有那些在編譯語言中才能找到的高級軟體工程工具。
不像其他腳本語言不同,這種結合使Python在長期大型的開發項目中十分有用。下面是一些Python工具箱中的工具簡介:
動態類型
Python在程序運行過程中跟蹤對象的類型,不需要代碼中進行關於複雜的類型和大小的聲明。事實上,Python中沒有類型或變數聲明這種做法。因為Python代碼不約束數據的類型,它往往自動地應用了一種廣義上的對象。
自動內存管理
Python自動為對象分配空間,並且當對象不再使用時將自動撤銷空間(「垃圾回收」),當需要時自動擴展或收縮。正如你將學到的,Python能夠幫你完成底層的內存管理。
大型程序支持
為了能建立更大規模的系統,Python包含了模塊、類和異常等工具。這些工具允許你把系統組織為組件,使用OOP重用並定製代碼,並以一種優雅的方式處理事件和錯誤。前面提到的Python函數式編程工具,提供了實現相同目標的其他方法。
內置對象類型
Python提供了常用的數據結構作為語言的基本組成部分。例如,列表(list)、字典(dictionary)、字元串(string)。我們將會看到,它們靈活並易於使用。例如,內置對象可以根據需求擴展或收縮,可以任意地組織複雜的信息等。
內置工具
為了對以上對象類型進行處理,Python自帶了許多強大的標準操作,包括拼接(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。
庫工具
為了完成更多特定的任務,Python預置了許多預編碼的庫工具,從正則表達式匹配到網路都支持。當你掌握了語言本身,就能在應用級的操作中使用Python的庫工具。
第三方工具
由於Python是開源的,它鼓勵開發者提供Python內置工具之外的預編碼工具。你可以在網上找到COM、圖像處理、數值編程、XML、資料庫訪問等許多免費的支持工具。
除了這一系列的Python工具外,Python保持了相當簡潔的語法和設計。綜合這一切得到的就是一個具有腳本語言所有可用性的強大編程工具。
請點擊輸入圖片描述
5. 可混合
Python程序可以以多種方式輕易地與其他語言編寫的組件「粘接」在一起。例如,Python的C語言API可以幫助Python程序靈活地調用C程序。這意味著可以根據需要給Python程序添加功能,或者在其他環境系統中使用Python。
例如,將Python與C或者C++寫成的庫文件混合起來,使Python成為一個前端語言和定製工具。就像之前我們所提到過的那樣,這使Python成為一個很好的快速原型工具;系統可以在開發初期出於速度考慮使用Python實現,然後轉移至C,根據不同時期性能的需要逐步實現系統。
6. 相對簡單易用
同其他語言(如C++、Java和C#)相比,Python編程對大多數用戶來講出奇得簡單。要運行Python程序,你只需簡單地鍵入Python程序並運行就可以了。不需要其他語言(如C或C++)所必需的編譯和鏈接等中間步驟。
Python可立即執行程序,這形成了一種互動式編程體驗和不同情況下快速調整的能力,往往在修改代碼後幾乎能立即看到程序改變後的效果。
當然,開發周期短僅僅是Python易用性的一方面的體現。Python提供了簡潔的語法和強大的內置工具。實際上,Python曾被稱為「可執行的偽代碼」。由於它減少了其他工具常見的複雜性,在實現相同的功能時,Python程序比採用其他流行語言編寫的程序更為簡單、小巧,也更靈活。
請點擊輸入圖片描述
7. 相對簡單易學
這一部分引出了本書的重點:尤其同其他廣泛使用的編程語言比較時,Python語言的核心相當簡單易學。實際上,如果你是一位有經驗的程序員,你可以期望在幾天內寫出小規模的Python代碼,你也許能在幾個小時之內習得Python的一招一式,但是你並不能指望在如此短的時間內成為專家(忘掉市面上的那些宣傳廣告吧)。
當然,掌握任何像今天Python這樣的充實主題都不是一件輕鬆事,我們將在本書的剩餘部分致力於此項任務。但是為了掌握Python而進行的真正投資是非常值得的——最終你會獲取幾乎在每個計算機應用程序領域都適用的編程技能。此外,很多人還發現Python的學習曲線比其他的編程語言更加平緩。
這對於那些想學習語言以在工作中應用的專業人員來說是一個好消息,同樣對於那些使用Python層進行定製和控制的系統的終端用戶來說,也是一個好消息。如今,許多系統都依賴於這一事實:用戶可以在沒有或者得到很少支持的情況下就學到足夠的Python知識以便當場增刪他們的Python定製化代碼。
此外,Python還孕育出一群不以編程為生而以編程為樂的用戶,他們並不需要掌握全面的軟體開發技巧。儘管Python還是有很多高級編程工具,但不論對初學者還是行家來說,Python的核心語言精髓仍是相當簡單的。
8. 以Monty Python命名
好的,在講完這麼多技術方面的優勢後,我想再揭露一個Python世界裡面令人驚奇而保守良好的小秘密。
儘管Python的書和圖標中有很多爬行動物,真相卻是Python以英國喜劇組「Monty Python」命名——這是BBC 在20世紀70年代喜劇《Monty Python’s Flying Circus》的製片方,也是至今仍在流行的少量包括《Monty Python and the Holy Grai》在內的大電影的製片方。Python的最初創作者是Monty Python的粉絲,這同其他許多的軟體開發者一樣(事實上,這兩個領域存在某種對稱性……)。
請點擊輸入圖片描述
▲《Python學習手冊》書封上的爬行動物
這段有趣的歷史無疑增加了Python代碼例子的幽默屬性。例如,作為一般變數名命名傳統的「foo」和「bar」在Python世界中變成了「spam」和「eggs」。而在Python中偶爾出現的「Brian」,「ni」和「shrubbery」表現得也同此類似。它甚至影響了Python的整個社區。
當然了,如果你對這部喜劇非常熟悉,就能體會這其中的笑點,但如果不熟悉則相反。你不必非得熟悉Monty Python這部劇來了解從劇中獲得靈感的例子(包括你將在本書中看到的許多例子),但至少你現在知道它們的起源了。(嗨——我已經告訴你啦。)
02
Python和其他語言比較起來怎麼樣
最後,你也許已經知道了,人們往往將Python與Perl、Tcl和Javat等語言相比較。這部分總結這方面的一些普遍共識。
我想預先表明我個人並不喜歡通過詆毀競爭者來獲勝——這在長期是行不通的,而且也不是這裡的目的。此外,這並不是一場零和遊戲——絕大多數的程序員在他們的職業生涯中都會使用許多語言。儘管如此,編程工具也展示出值得考慮的選擇和權衡。畢竟,如果Python沒有比它的競爭者提供更多的東西,那麼它一開始就不會被人們使用了。
請點擊輸入圖片描述
我們之前已經介紹過性能上的權衡,那麼這裡重點談一下功能。儘管下面列舉的這些語言也是值得學習和使用的有力工具,但人們通常認為Python:
比Tcl強大。Python強有力地支持「大規模編程」,使其適用於開發大型系統,它的應用程序庫也更加豐富。
比Perl更具可讀性。Python有著簡潔的語法和簡單連貫的設計,這反過來使得Python更具可讀性和更易於維護,同時有助於減少程序bug。
比Java和C#更簡單、更易於使用。Python是一門腳本語言,但Java和C#兩者從像C++這樣更加大型的OOP系統語言中繼承了許多語法和複雜性。
比C++更簡單、更易於使用。Python代碼比等效的C++代碼更加簡單,長度只有其五分之一到三分之一。儘管作為腳本語言,Python有時能扮演許多不同的角色。
比C更加簡單和高級。Python遠離底層硬體架構從而降低了代碼複雜性,擁有更好的組織結構,並比C(C++的祖先)更加友善。
比Visual Basic更強大,用途廣泛,也更具備跨平台特性。Python是更加廣泛使用的更豐富的語言,它的開源本質意味著它不可能被某一個公司所掌控。
比PHP更易懂並且用途更廣。Python也用來構建Web站點,但是,它也應用於幾乎每個計算機領域,從機器人到電影動畫和遊戲。
比JavaScript更強大和用途廣泛。Python有一個更大的工具集,也並不是牢牢地束縛於Web開發。它也用於科學建模、儀器調試等。
比Ruby更具可讀性,並更為人們所接受。Python的語法混亂更少,尤其在較複雜代碼中,同時它的OOP對用戶和和不太使用OOP的工程中是完全可選的。
比Lua更成熟和受到更廣泛關注。Python更加龐大的特性集合和更加擴展的庫支持給予其比Lua(一門和Tcl一樣的嵌入式「膠水」語言)更加寬廣的視野。
比SmallTalk、Lisp和Prolog更不晦澀。Python擁有這類函數式語言的動態品味,但是也擁有開發者和定製系統終端用戶都可接受的傳統語法。
特別是對不僅僅用於個人掃描文本文件,未來會被人們(包括你在內)讀到的程序而言,很多人會發現Python比目前任何可用的腳本或編程語言都划得來。不僅如此,除非你的應用要求最尖端的性能,Python往往是C、C++和Java等系統開發語言的一個不錯的替代品:Python代碼能夠常常實現相同的目標,卻會減少很多編寫、調試和維護的麻煩。
當然,本文作者從1992年就已經是Python的正式佈道者了,所以儘可能接受這些意見吧(其他語言的擁護者的利益可能會受到些損失)。然而,所有這些觀點的確代表了投入時間和精力來探索Python的眾多開發者的一致看法。
關於作者:Mark Lutz是一位世界級的Python培訓講師。他是Python暢銷書籍的作者,同時從1992年起就成為Python社區的引領者,有著30餘年的軟體開發經驗。
本文摘編自《Python學習手冊》(原書第5版),經出版方授權發布。
請點擊輸入圖片描述
數據分析員用python做數據分析是怎麼回事,需要用到python中的那些內容,具體是怎麼操作的?
最近,Analysis with Programming加入了Planet Python。我這裡來分享一下如何通過Python來開始數據分析。具體內容如下:
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
1
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv(‘/Users/al-ahmadgaidasaad/Documents/d.csv’)
# Reading data from web
data_url = “”
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
END
數據變換
1
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據(下圖)
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理
請點擊輸入圖片描述
2
在R語言中,數據列和行的名字通過colnames和rownames來分別進行提取。在Python中,我們則使用columns和index屬性來提取,如下:
# Extracting column names
print df.columns
# OUTPUT
Index([u’Abra’, u’Apayao’, u’Benguet’, u’Ifugao’, u’Kalinga’], dtype=’object’)
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype=’int64′)
3
數據轉置使用T方法,
# Transpose data
print df.T
# OUTPUT
0 1 2 3 4 5 6 7 8 9
Abra 1243 4158 1787 17152 1266 5576 927 21540 1039 5424
Apayao 2934 9235 1922 14501 2385 7452 1099 17038 1382 10588
Benguet 148 4287 1955 3536 2530 771 2796 2463 2592 1064
Ifugao 3300 8063 1074 19607 3315 13134 5134 14226 6842 13828
Kalinga 10553 35257 4544 31687 8520 28252 3106 36238 4973 40140
… 69 70 71 72 73 74 75 76 77
Abra … 12763 2470 59094 6209 13316 2505 60303 6311 13345
Apayao … 37625 19532 35126 6335 38613 20878 40065 6756 38902
Benguet … 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao … 9838 17125 18940 15560 7746 19737 19422 15910 11096
Kalinga … 65782 15279 52437 24385 66148 16513 61808 23349 68663
78
Abra 2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga 16900
Other transformations such as sort can be done using codesort/code attribute. Now let’s extract a specific column. In Python, we do it using either codeiloc/code or codeix/code attributes, but codeix/code is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
4
其他變換,例如排序就是用sort屬性。現在我們提取特定的某列數據。Python中,可以使用iloc或者ix屬性。但是我更喜歡用ix,因為它更穩定一些。假設我們需數據第一列的前5行,我們有:
print df.ix[:, 0].head()
# OUTPUT 0 1243 1 4158 2 1787 3 17152 4 1266 Name: Abra, dtype: int64
5
順便提一下,Python的索引是從0開始而非1。為了取出從11到20行的前3列數據,我們有
print df.ix[10:20, 0:3]
# OUTPUT
Abra Apayao Benguet
10 981 1311 2560
11 27366 15093 3039
12 1100 1701 2382
13 7212 11001 1088
14 1048 1427 2847
15 25679 15661 2942
16 1055 2191 2119
17 5437 6461 734
18 1029 1183 2302
19 23710 12222 2598
20 1091 2343 2654
上述命令相當於df.ix[10:20, [‘Abra’, ‘Apayao’, ‘Benguet’]]。
6
為了捨棄數據中的列,這裡是列1(Apayao)和列2(Benguet),我們使用drop屬性,如下:
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
Abra Ifugao Kalinga
0 1243 3300 10553
1 4158 8063 35257
2 1787 1074 4544
3 17152 19607 31687
4 1266 3315 8520
axis 參數告訴函數到底捨棄列還是行。如果axis等於0,那麼就捨棄行。
END
統計描述
1
下一步就是通過describe屬性,對數據的統計特性進行描述:
print df.describe()
# OUTPUT
Abra Apayao Benguet Ifugao Kalinga
count 79.000000 79.000000 79.000000 79.000000 79.000000
mean 12874.379747 16860.645570 3237.392405 12414.620253 30446.417722
std 16746.466945 15448.153794 1588.536429 5034.282019 22245.707692
min 927.000000 401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.500000 2328.000000 8205.000000 8601.500000
50% 5790.000000 10588.000000 3202.000000 13044.000000 24494.000000
75% 13330.500000 33289.000000 3918.500000 16099.500000 52510.500000
max 60303.000000 54625.000000 8813.000000 21031.000000 68663.000000
END
假設檢驗
1
Python有一個很好的統計推斷包。那就是scipy裡面的stats。ttest_1samp實現了單樣本t檢驗。因此,如果我們想檢驗數據Abra列的稻穀產量均值,通過零假設,這裡我們假定總體稻穀產量均值為15000,我們有:
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, ‘Abra’], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值組成的元祖:
t : 浮點或數組類型t統計量
prob : 浮點或數組類型two-tailed p-value 雙側概率值
2
通過上面的輸出,看到p值是0.267遠大於α等於0.05,因此沒有充分的證據說平均稻穀產量不是150000。將這個檢驗應用到所有的變數,同樣假設均值為15000,我們有:
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599, -4.564575 , 6.17156198]),
array([ 2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一個數組是t統計量,第二個數組則是相應的p值
END
可視化
1
Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加提及,我們也可選擇bokeh和seaborn模塊。之前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。
請點擊輸入圖片描述
2
# Import the module for plotting
import matplotlib.pyplot as plt
plt.show(df.plot(kind = ‘box’))
現在,我們可以用pandas模塊中集成R的ggplot主題來美化圖表。要使用ggplot,我們只需要在上述代碼中多加一行,
import matplotlib.pyplot as plt
pd.options.display.mpl_style = ‘default’ # Sets the plotting display theme to ggplot2
df.plot(kind = ‘box’)
3
這樣我們就得到如下圖表:
請點擊輸入圖片描述
4
比matplotlib.pyplot主題簡潔太多。但是在本文中,我更願意引入seaborn模塊,該模塊是一個統計數據可視化庫。因此我們有:
# Import the seaborn library
import seaborn as sns
# Do the boxplot
plt.show(sns.boxplot(df, widths = 0.5, color = “pastel”))
請點擊輸入圖片描述
5
多性感的盒式圖,繼續往下看。
請點擊輸入圖片描述
6
plt.show(sns.violinplot(df, widths = 0.5, color = “pastel”))
請點擊輸入圖片描述
7
plt.show(sns.distplot(df.ix[:,2], rug = True, bins = 15))
請點擊輸入圖片描述
8
with sns.axes_style(“white”):
plt.show(sns.jointplot(df.ix[:,1], df.ix[:,2], kind = “kde”))
請點擊輸入圖片描述
9
plt.show(sns.lmplot(“Benguet”, “Ifugao”, df))
END
創建自定義函數
在Python中,我們使用def函數來實現一個自定義函數。例如,如果我們要定義一個兩數相加的函數,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
# OUTPUT
4
順便說一下,Python中的縮進是很重要的。通過縮進來定義函數作用域,就像在R語言中使用大括弧{…}一樣。這有一個我們之前博文的例子:
產生10個正態分布樣本,其中和
基於95%的置信度,計算和 ;
重複100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar – ss.norm.ppf(q = 1 – p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 – p) * (sigma / np.sqrt(n))
if (mu low) (mu up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = “There are ” + str(inside) + ” confidence intervals that contain “
“the true mean (” + str(mu) + “), that is ” + str(per) + ” percent of the total CIs”
return {“Matrix”: m, “Decision”: desc}
上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了 Python專家
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 – p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar – scaled_crit
up = xbar + scaled_crit
rem = (mu low) (mu up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = “There are ” + str(inside) + ” confidence intervals that contain “
“the true mean (” + str(mu) + “), that is ” + str(per) + ” percent of the total CIs”
return {“Matrix”: m, “Decision”: desc}
楊淑娟python老師講得怎麼樣
楊淑娟python老師講得好。楊淑娟python老師講得好是因為:
1、講課容易理解。楊淑娟python老師是Python技術專家,把晦澀的專業名詞生動形象的講出來,講課很容易就聽懂了。
2、講課經驗豐富。楊淑娟python老師是資料庫技術專家,從事了近10年的教育培訓,培訓學員上萬人次,有著豐富的講課經驗,2016被騰訊教育評為教育培訓界的「中國好老師」。所以楊淑娟python老師講得好。
python能做什麼
python的用途:
Python的優勢有必要作為第一步去了解,Python作為面向對象的腳本語言,優勢就是數據處理和挖掘,這也註定了它和AI、互聯網技術的緊密聯繫。
網路爬蟲。顧名思義,從互聯網上爬取信息的腳本,主要由urllib、requests等庫編寫,實用性很強,小編就曾寫過爬取5w數據量的爬蟲。在大數據風靡的時代,爬蟲絕對是新秀。
人工智慧。AI使Python一戰成名,AI的實現可以通過tensorflow庫。神經網路的核心在於激活函數、損失函數和數據,數據可以通過爬蟲獲得。訓練時大量的數據運算又是Python的show time。
擴展資料:
Python開發人員盡量避開不成熟或者不重要的優化。一些針對非重要部位的加快運行速度的補丁通常不會被合併到Python內。在某些對運行速度要求很高的情況,Python設計師傾向於使用JIT技術,或者用使用C/C++語言改寫這部分程序。可用的JIT技術是PyPy。
Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。
Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。
參考資料來源:百度百科-Python
原創文章,作者:CNKJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133163.html