全面介紹下 Pandas
本文將從Python生態(tài)、Pandas歷史背景、Pandas核心語(yǔ)法、Pandas學(xué)習(xí)資源四個(gè)方面去聊一聊Pandas,期望能帶給大家一點(diǎn)啟發(fā)。

一、Python生態(tài)里的Pandas
五月份TIOBE編程語(yǔ)言排行榜,Python追上Java又回到第二的位置。Python如此受歡迎一方面得益于它崇尚簡(jiǎn)潔的編程哲學(xué),另一方面是因?yàn)閺?qiáng)大的第三方庫(kù)生態(tài)。
要說(shuō)殺手級(jí)的庫(kù),很難排出個(gè)先后順序,因?yàn)閜ython的明星庫(kù)非常多,在各個(gè)領(lǐng)域都算得上出類拔萃。
比如web框架-Django、深度學(xué)習(xí)框架-TensorFlow、自然語(yǔ)言處理框架-NLTK、圖像處理庫(kù)-PIL、爬蟲(chóng)庫(kù)-requests、圖形界面框架-PyQt、可視化庫(kù)-Matplotlib、科學(xué)計(jì)算庫(kù)-Numpy、數(shù)據(jù)分析庫(kù)-Pandas......
上面大部分庫(kù)我都用過(guò),用的最多也最順手的是Pandas,可以說(shuō)這是一個(gè)生態(tài)上最完整、功能上最強(qiáng)大、體驗(yàn)上最便捷的數(shù)據(jù)分析庫(kù),稱為編程界的Excel也不為過(guò)。
Pandas在Python數(shù)據(jù)科學(xué)鏈條中起著關(guān)鍵作用,處理數(shù)據(jù)十分方便,且連接Python與其它核心庫(kù)。

二、十項(xiàng)全能的Pandas
Pandas誕生于2008年,它的開(kāi)發(fā)者是Wes McKinney,一個(gè)量化金融分析工程師。

因?yàn)槠S趹?yīng)付繁雜的財(cái)務(wù)數(shù)據(jù),Wes McKinney便自學(xué)Python,并開(kāi)發(fā)了Pandas。
大神就是這么任性,沒(méi)有,就創(chuàng)造。
為什么叫作Pandas,其實(shí)這是“Python data analysis”的簡(jiǎn)寫(xiě),同時(shí)也衍生自計(jì)量經(jīng)濟(jì)學(xué)術(shù)語(yǔ)“panel data”(面板數(shù)據(jù))。

所以說(shuō)Pandas的誕生是為了分析金融財(cái)務(wù)數(shù)據(jù),當(dāng)然現(xiàn)在它已經(jīng)應(yīng)用在各個(gè)領(lǐng)域了。
?2008: Pandas正式開(kāi)發(fā)并發(fā)布
2009:Pandas成為開(kāi)源項(xiàng)目
2012: 《利用Python進(jìn)行數(shù)據(jù)分析》出版
2015: Pandas 成為 NumFOCUS 贊助的項(xiàng)目
?
Pandas能做什么呢?
它可以幫助你任意探索數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行讀取、導(dǎo)入、導(dǎo)出、連接、合并、分組、插入、拆分、透視、索引、切分、轉(zhuǎn)換等,以及可視化展示、復(fù)雜統(tǒng)計(jì)、數(shù)據(jù)庫(kù)交互、web爬取等。
同時(shí)Pandas還可以使用復(fù)雜的自定義函數(shù)處理數(shù)據(jù),并與numpy、matplotlib、sklearn、pyspark、sklearn等眾多科學(xué)計(jì)算庫(kù)交互。

Pandas有一個(gè)偉大的目標(biāo),即成為任何語(yǔ)言中可用的最強(qiáng)大、最靈活的開(kāi)源數(shù)據(jù)分析工具。
讓我們期待下。
三、Pandas核心語(yǔ)法
1. 數(shù)據(jù)類型
Pandas的基本數(shù)據(jù)類型是dataframe和series兩種,也就是行和列的形式,dataframe是多行多列,series是單列多行。

如果在jupyter notebook里面使用pandas,那么數(shù)據(jù)展示的形式像excel表一樣,有行字段和列字段,還有值。

2. 讀取數(shù)據(jù)
pandas支持讀取和輸出多種數(shù)據(jù)類型,包括但不限于csv、txt、xlsx、json、html、sql、parquet、sas、spss、stata、hdf5
讀取一般通過(guò)read_*函數(shù)實(shí)現(xiàn),輸出通過(guò)to_*函數(shù)實(shí)現(xiàn)。



3. 選擇數(shù)據(jù)子集
導(dǎo)入數(shù)據(jù)后,一般要對(duì)數(shù)據(jù)進(jìn)行清洗,我們會(huì)選擇部分?jǐn)?shù)據(jù)使用,也就是子集。
在pandas中選擇數(shù)據(jù)子集非常簡(jiǎn)單,通過(guò)篩選行和列字段的值實(shí)現(xiàn)。

具體實(shí)現(xiàn)如下:


4. 數(shù)據(jù)可視化
不要以為pandas只是個(gè)數(shù)據(jù)處理工具,它還可以幫助你做可視化圖表,而且能高度集成matplotlib。
你可以用pandas的plot方法繪制散點(diǎn)圖、柱狀圖、折線圖等各種主流圖表。

5. 創(chuàng)建新列
有時(shí)需要通過(guò)函數(shù)轉(zhuǎn)化舊列創(chuàng)建一個(gè)新的字段列,pandas也能輕而易舉的實(shí)現(xiàn)



6. 分組計(jì)算
在sql中會(huì)用到group by這個(gè)方法,用來(lái)對(duì)某個(gè)或多個(gè)列進(jìn)行分組,計(jì)算其他列的統(tǒng)計(jì)值。
pandas也有這樣的功能,而且和sql的用法類似。



7. 數(shù)據(jù)合并
數(shù)據(jù)處理中經(jīng)常會(huì)遇到將多個(gè)表合并成一個(gè)表的情況,很多人會(huì)打開(kāi)多個(gè)excel表,然后手動(dòng)復(fù)制粘貼,這樣就很低效。
pandas提供了merge、join、concat等方法用來(lái)合并或連接多張表。

小結(jié)
pandas還有數(shù)以千計(jì)的強(qiáng)大函數(shù),能實(shí)現(xiàn)各種騷操作。
python也還有數(shù)不勝數(shù)的寶藏庫(kù),等著大家去探索
三、Pandas學(xué)習(xí)資源
如果說(shuō)學(xué)習(xí)Pandas最好的教程是什么,那毫無(wú)疑問(wèn)是官方文檔,從小白到高手,它都給你安排的妥妥的,這個(gè)后面詳細(xì)介紹。
下面我會(huì)從入門(mén)、進(jìn)階、練習(xí)四個(gè)三面給你們推薦相應(yīng)的教程和資源。
1. 入門(mén)教程
十分鐘入門(mén)Pandas(英文版)[1]
這是Pandas官網(wǎng)專門(mén)為新手寫(xiě)的入門(mén)引導(dǎo),大概就幾千字,包括對(duì)Pandas的簡(jiǎn)要介紹,和一些基本的功能函數(shù)。
主要的內(nèi)容有:數(shù)據(jù)的創(chuàng)建、查看、篩選、拼接、連接、分組、變形、可視化等等。
而且這個(gè)小冊(cè)子包含了很多代碼示例,如果你能完整過(guò)一遍,入門(mén)Pandas基本沒(méi)啥問(wèn)題。
中文版似乎也有,但翻譯的準(zhǔn)確性大家自己識(shí)別斟酌下。
十分鐘入門(mén) Pandas | Pandas 中文[2]
利用Pandas進(jìn)行數(shù)據(jù)分析[3]
這本書(shū)不用了說(shuō)了,可能是你入門(mén)python數(shù)據(jù)分析的第一本書(shū),它的作者是Pandas庫(kù)的核心開(kāi)發(fā)者,也就是說(shuō)這本書(shū)相當(dāng)于是Pandas的官方出版教程。

為什么它適合入門(mén)pandas,因?yàn)檎緯?shū)的編排是從數(shù)據(jù)分析的角度切入的,由淺入深將pandas對(duì)數(shù)據(jù)的處理講的很透徹。
當(dāng)然這本書(shū)也存在知識(shí)點(diǎn)過(guò)于零碎,翻譯不到位的問(wèn)題,但整體來(lái)說(shuō)是本好書(shū)。
w3schools pandas tutorial[4]
w3school的pandas文檔, 邏輯比較清晰,也是從數(shù)據(jù)分析角度去講pandas。

Learn Pandas Tutorials[5]
數(shù)據(jù)科學(xué)平臺(tái)kaggle提供的pandas入門(mén)教程,共六大節(jié)涵蓋了pandas數(shù)據(jù)處理各種方法。

joyful-pandas[6]
國(guó)內(nèi)小伙伴寫(xiě)的Pandas筆記,挺詳細(xì)的,大家可以去下載項(xiàng)目里的notebook,放到自己電腦里練習(xí)。
2. 進(jìn)階教程
pandas用戶指南[7]
這是pandas官網(wǎng)的教程,非常詳細(xì),主要從數(shù)據(jù)處理的角度介紹相應(yīng)的pandas函數(shù),方便用戶查閱。
如果你的英文還不錯(cuò),也喜歡閱讀技術(shù)文檔,我是建議花時(shí)間把這份指南看一遍,配合練習(xí)。
我把整個(gè)pandas文檔下載下來(lái),發(fā)現(xiàn)足足有3000多頁(yè)。
pandas api檢索[8]
官網(wǎng)的pandas api集合,也就是pandas所有函數(shù)方法的使用規(guī)則,是字典式的教程,建議多查查。
pandas-cookbook[9]
這是一個(gè)開(kāi)源文檔,作者不光介紹了Pandas的基本語(yǔ)法,還給出了大量的數(shù)據(jù)案例,讓你在分析數(shù)據(jù)的過(guò)程中熟悉pandas各種操作。
Python Data Science Handbook[10]
數(shù)據(jù)科學(xué)書(shū)冊(cè),不光有pandas,還有ipython、numpy、matplotlib、sklearn,這些都是深入學(xué)習(xí)pandas不可缺少的工具。
3. 練習(xí)資源
Pandas練習(xí)集[11]
github上一個(gè)練習(xí)項(xiàng)目,針對(duì)pandas每個(gè)功能都有對(duì)應(yīng)的真實(shí)數(shù)據(jù)練習(xí)。
101個(gè)Pandas練習(xí)[12]
一位國(guó)外博主總結(jié)的100多個(gè)pandas練習(xí)題,非常全面。
datacamp[13]
數(shù)據(jù)科學(xué)教程網(wǎng)站,里面有大量pandas的練習(xí)題,還提供了詳細(xì)的速查表。

小結(jié)
pandas的教程主要還是以英文為主,國(guó)內(nèi)翻譯的質(zhì)量參差不齊,還是建議你在入門(mén)后多去看英文文檔,這是第一手資料,也是最靠譜的。
Reference
十分鐘入門(mén)Pandas(英文版):https://pandas.pydata.org/docs/user_guide/10min.html
[2]十分鐘入門(mén) Pandas | Pandas 中文:http://www.pypandas.cn/docs/getting_started/10min.html
[3]利用Pandas進(jìn)行數(shù)據(jù)分析:https://github.com/wesm/pydata-book
[4]w3schools pandas tutorial:https://www.w3schools.com/python/pandas/default.asp
[5]Learn Pandas Tutorials:https://www.kaggle.com/learn/pandas
[6]joyful-pandas:https://github.com/datawhalechina/joyful-pandas
[7]pandas用戶指南:https://pandas.pydata.org/docs/user_guide/index.html#user-guide
[8]pandas api檢索:https://pandas.pydata.org/docs/reference/index.html#api
[9]pandas-cookbook:https://github.com/jvns/pandas-cookbook
[10]Python Data Science Handbook:https://jakevdp.github.io/PythonDataScienceHandbook/
[11]Pandas練習(xí)集:https://github.com/guipsamora/pandas_exercises
[12]101個(gè)Pandas練習(xí):https://www.machinelearningplus.com/python/101-pandas-exercises-python/
[13]datacamp:https://www.datacamp.com/community/tutorials
