學習python中的pandas有沒有好的教程推薦?
以中文書而言,這本算是不錯的,作者就是pandas的最初開發者。這本書我買的是Kindle版本,不知道為何近期kindle版本下線了。
其實,如果你習慣看英文文檔,不妨從官方的10 Minutes to pandas(10 Minutes to pandas)開始看,最基本的操作速成都有了,而且網上還有中文翻譯版,叫十分鐘搞定pandas。
當然,這個是速成,要了解細節功能,還是看文檔吧,pandas: powerful Python data analysis toolkit ,個人感覺文檔的清晰度其實比上面那本書來得還要好。
當然,如果你還需要看如果提取美股數據,就要增加看pandas-datareader(pandas-datareader - pandas-datareader 0.1 documentation)的基本用法介紹。如果要折騰A股數據,那麼看下Tushare的使用介紹(TuShare -財經數據介麵包)即可。如果是做數據分析這一塊,不做其他的開發的話,那麼pandas可以說是最重要的,它提供了最基礎的數據結構---DataFrame(數據結構庫)和Numpy(基本的科學計算庫)。pandas這個名字就是來源於一個數據結構panel data(面板數據),學過計量經濟學的肯定對此不陌生。
如果題主是一個初學者的話,之前也有答主 @張翼軫 提到過,牆裂推薦python for data analysis:
利用Python進行數據分析 (豆瓣)
這本書對於初學者是極為友好地,在書本的最後有一個python語言精要,介紹了元組,字典,函數等最基本語法規則。
如果這一本不滿足的話,就可以看
http://pandas.pydata.org/pandas-docs/stable/pandas.pdf
pandas的官方文檔,最新版0.19.2,1949頁看著挺嚇人的。
答主是做金融這一部分的,關於pandas在這一部分領域的應用也不少
Python金融大數據分析 (豆瓣)
介紹了pandas在金融領域的一些應用,主要是一些數據處理方面的,比如提取雅虎財經,谷歌財經的數據,將它們做成一個DataFrame表格來處理,等等
《Learning Pandas》 Michael Heydt【摘要 書評 試讀】圖書
這一本書和前面那本不同的是有一章專門講了如何導入數據到你的ipython notebook中,HTML,sql資料庫等等基本都涵蓋了。
電子書地址:https://pdf.k0nsl.org/C/Computer%20and%20Internet%20Collection/2015%20Computer%20and%20Internet%20Collection%20part%209/Packt%20Publishing%20Learning%20pandas%20(2015).pdf
《Mastering Pandas for Finance》 Michael Heydt【摘要 書評 試讀】圖書
主要側重於pandas中的計算部分,像時間序列。特點是algorithm trading這一張教你怎麼用zipline來做回測,用這本書的話推薦下載anaconda2.7答主如果想要實戰一下,推薦使用優礦社區,一個量化投資平台,裡面的股票數據都是pandas的DataFrame數據類型。或者是Your Home for Data Science,kaggle平台,基於pandas的數據分析網站
嗯,教程的話等我們數據分析師有空了仔細請教之後送上,在此之前,獻上我們數據分析師寫的pandas常用數據查詢語法總結
在使用Pandas之前,大多數數據分析師已經掌握了Excel和SQL,並且在剛上手Pandas時會經常習慣性想到「老辦法」。"如果誰能把常用的數據查詢語法做個對比就好了 ",我也曾不止一次地想享受前人的成果,無奈發現網上的文章側重不同且深淺不一,還涉及到一些Pandas新老版本的問題,於是決定自己動手。
一、舉例的數據
假設我有個六列的dataframe:一列是銷售員,一列是所屬團隊,其它四列分別是四個季度的銷售額。
1新增列-基於原有列的全年銷售額
首先df["Total "]確保了你在該df內新增了一個column,然後累加便可。
df["Total"] = df["Q1"]+df["Q2"]+df["Q3"]+df["Q4"]
你可能想使用諸如sum()的函數進行這步,很可惜,sum()方法只能對列進行求和,幸好它可以幫我們求出某季度的總銷售額。df["Q1"].sum(),你就能得到一個Q1的總銷售額,除此之外,其他的聚合函數,max,min,mean都是可行的。
2分組統計 - 團隊競賽
那麼按團隊進行統計呢?在mysql里是group by,Pandas里也不例外,你只需要df.groupby("Team").sum()就能看到期望的答案了。
3排序 - 誰是銷售冠軍
如果你關心誰的全年銷售額最多,那麼就要求助於sort_values方法了,在excel內是右鍵篩選,SQL內是一個orderby。默認是順序排列的,所以要人為設定為False,如果你只想看第一名,只需要在該語句末尾添加.head(1) 。
4切片-只給我看我關心的行
接下來就是涉及一些條件值的問題,例如我只關心Team為A的數據,在Excel里是篩選框操作,在SQL里寫個where就能搞定,在Pandas里需要做切片。
查看Pandas文檔時,你可能已經見過各種切片的函數了,有loc,iloc,ix,iy,這裡不會像教科書一樣所有都講一通讓讀者搞混。這種根據列值選取行數據的查詢操作,推薦使用loc方法。
df.loc[df["Team"]== "A",["Salesman", "Team","Year"]],這裡用SQL語法理解更方便,loc內部逗號前面可以理解為where,逗號後可以理解為select的欄位。
如果想全選出,那麼只需將逗號連帶後面的東西刪除作為預設,即可達到select *的效果。
5切片 - 多條件篩選
在Pandas中多條件切片的寫法會有些繁瑣,df.loc[ (df["Team"]== "A" ) (df["Total"] &> 15000 ) ],添加括弧與條件
這裡有一個有意思的小應用,如果你想給符合某些條件的員工打上優秀的標籤,你就可以結合上述新增列和切片兩點,進行條件賦值操作。
df.loc[ (df["Team"]== "A" ) (df["Total"] &> 15000 ) , "Tag"] = "Good"
6刪除列 - 和查詢無關,但是很有用
當然這裡只是個舉例,這時候我想刪除Tag列,可以del df["Tag"],又回到了之前。
二、連接
接下來要講join了,現在有每小時銷售員的職位對應表pos,分為Junior和Senior,要將他們按對應關係查到df中。
這裡需要認識一下新朋友,merge方法,將兩張表作為前兩個輸入,再定義連接方式和對應鍵。對應到Excel中是Vlookup,SQL中就是join。在pandas里的連接十分簡單。
df = pd.merge(df, pos, how="inner", on="Salesman")
注意,這個時候其實我們是得到了新的df,如果不想覆蓋掉原有的df,你可以在等號左邊對結果重新命名。
這時候有了兩組標籤列(對應數值列),就可以進行多重groupby了。
當然這樣的結果並不能公平地反應出哪一組更好,因為每組的組員人數不同,可能有平均數的參與會顯得更合理,並且我們只想依據全年綜合來評價。
這裡的數據是捏造的,不過也一目了然了。
三、合併操作
最後以最簡單的一個合併操作收尾。
如果我又有一批數據df2,需要將兩部分數據合併。只需要使用concat方法,然後傳一個列表作為參數即可。不過前提是必須要保證他們具有相同類型的列,即使他們結構可能不同(df2的Team列在末尾,也不會影響concat結果,因為pandas具有自動對齊的功能)。
pd.concat([df,df2])
尾聲
以上就是一些基礎的Pandas數據查詢操作了。作為Pandas初學者,如果能善用類比遷移的方法進行學習並進行總結是大有裨益的。如果看完本文還沒有能了解到你關心的查詢方法,可以留言聯繫,或許還可以有續集。
可以直接去看pandas的官方教程Python Data Analysis Library
【原】十分鐘搞定pandas - ChaoSimple - 博客園 對於pandas十分鐘入門的中文翻譯
python的幾個科學計算庫可以先了解一下基礎用法就行,然後在實踐中碰到新問題再去查相應部分,很多函數也不常用,那些函數太多看一遍很難記住。沒有動手實踐看完《用python進行數據分析》估計沒太大用
知乎專欄 電影數據輕鬆學習 Pandas,抓取了豆瓣電影的數據進行分析,以輕鬆愉快的方式學習 Pandas ~~
從操作數據角度的宏觀視角看 Numpy手記 和 Pandas手記,很直觀。各種教程,包含官方的入門教程,都是太細碎了,沒必要按教程來學。從應用的角度更容易上手。
我寫了一個pandas hello world,知乎專欄。
結合Linux系統監控命令寫的,應該比《用python進行數據分析》更容易理解。
推薦閱讀:
※寫金融學領域的論文如何搜尋數據?
※怎麼才能成功預測一個行業的發展前景?從哪些關鍵數據中可以分析出來? 比如互聯網行業。
※DNA 的雙螺旋結構,解開時兩端要轉很多圈嗎?
※申請美國大學的中國人,DIY黨佔多少比例?