你一定不能错过的pandas 1.0.0四大新特性
文章來源于Python大數據分析,作者費弗里
本文對應腳本及數據已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1. 簡介
毫無疑問pandas已經成為基于Python的數據分析領域最重要的包,而就在最近,pandas終于迎來了1.0.0版本,對于pandas來說這是一次更新是里程碑式的,刪除了很多舊版本中臃腫的功能,新增了一些嶄新的特性,更加專注于高效實用的數據分析,本文就將針對pandas 1.0.0在筆者眼中比較重要的特性進行介紹,對于想要完整徹底了解新版本特性的朋友可以直接去看官方文檔。
圖12. pandas 1.0.0中的新特性
由于1.0.0并不作為正式版發布,因此要安裝它需要指定版本(請注意,pandas 1.0.0目前只支持Python 3.6.1及以上版本):
pip install --upgrade pandas==1.0.0rc0成功安裝后,讓我們來體驗一下全新版本的pandas給我們帶來了哪些令人興奮的功能吧。
2.1 新增StringDtype數據類型
一直以來,pandas中的字符串類型都是用object來存儲的,這次更新帶來的新的更有針對性的StringDtye主要是為了解決如下問題:
object類型對于字符串與非字符串混合的數據無差別的統一存儲為一個類型,而現在的StringDtype則只允許存儲字符串對象
我們通過下面的例子更好的理解這個新特性,首先我們在excel中創建如下的表格(圖2),其包含兩列V1和V2,且V1中的元素并不是純粹的字符串,混雜了數字,而V2則為純粹的字符串列:
圖2在jupyter lab中我們首先讀入該數據并查看其具體信息:
# 讀入StringDtype_test.xlsx并查看其具體信息 StringDtype_test = pd.read_excel('StringDtype test.xlsx') StringDtype_test.info() 圖3可以看到在數據讀入階段兩列都被當作object型,接下來我們使用astype方法分別對兩列強制轉換類型為string,看看在我們的新版本中會發生什么(注意,在1.0.0版本中StringDtype的簡稱為string):
# 對V1進行強制類型 StringDtype_test['V1'].astype('string') 圖4可以看到,運行這段代碼后拋出了對應的錯誤,因為StringDtype只允許字符串出現,包含數字1的V1便被拒絕轉換為string型,而對于V2:
# 對V2進行強制類型 StringDtype_test['V2'].astype('string') 圖5則正常完成了數據類型的轉換,而pandas中豐富的字符串方法對新的string同樣適用,譬如英文字母大寫化:
StringDtype_test['V2'].astype('string').str.upper() 圖62.2 markdown表格導出
在新版本的pandas中新增了一個很有意思的方法to_markdown(),通過它我們可以將表格導出為markdown格式,下面是一個例子:
df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b']) # 導出為markdown表格字符串 print(df.to_markdown()) 圖7下面的表格就是我直接將圖7中打印出的markdown格式表格放到編輯器中的效果,只要你的編輯器支持markdown格式,就可以這樣方便地生成表格:
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |
2.3 新增ignore_index參數
我們在過去版本對DataFrame或Series按列使用sort_values()、按index使用sort_index()排序或使用drop_duplicates()去除數據框中的重復值時,經常會發現處理后的結果index隨著排序或行的刪除而被打亂,在index無意義時我們需要使用reset_index()方法對結果的index進行重置,而在新版本的pandas中,為sort_values()、sort_index()以及drop_duplicates()引入了新參數ignore_index(),這是一個bool型變量,默認值為False,當被設置為True時,排序后結果的index會被自動重置:
df = pd.DataFrame({'V1': [_ for _ in range(5)], }) # ignore_index設置為False df.sort_values(by='V1', ignore_index=False, ascending=False)這時因為ignore_index參數設置為False,排序后的結果index未被重置:
圖8接下來設置ignore_index參數為True:
# ignore_index設置為True df.sort_values(by='V1', ignore_index=True, ascending=False)這時返回的結果就已經被重置了index:
圖9sort_index()和drop_duplicates()效果同上,不重復展示。
2.4 美化info()輸出
新版本的pandas對DataFrame.info()輸出內容進行了美化,增強了使用體驗:
df = pd.DataFrame({"int_col": [1, 2, 3],"text_col": ["a", "b", "c"],"float_col": [0.0, 0.1, 0.2]}) df.info() 圖10還有很多更新內容,比如為rolling.apply()新增了參數engine,以使用numba后端極大提升numpy相關運算速度等,這里就不再贅述,感興趣的讀者可以前往 : https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
以上就是本文的全部內容,如有筆誤望指出!
-END-
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧2019年公眾號文章精選適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的你一定不能错过的pandas 1.0.0四大新特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中zip()函数的解释和可视
- 下一篇: 一文通俗了解对抗生成网络(GAN)核心思