本文對應腳本及數據已上傳至個人
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNoteshtml
毫無疑問pandas
已經成爲基於Python
的數據分析領域最重要的包,而就在最近,pandas
終於迎來了1.0.0版本,對於pandas
來講這是一次更新是里程碑式的,刪除了不少舊版本中臃腫的功能,新增了一些嶄新的特性,更加專一於高效實用的數據分析,本文就將針對pandas 1.0.0
在筆者眼中比較重要的特性進行介紹,對於想要完整完全瞭解新版本特性的朋友能夠直接去看官方文檔。python
因爲1.0.0
並不做爲正式版發佈,所以要安裝它須要指定版本(請注意,pandas 1.0.0
目前只支持Python 3.6.1
及以上版本):git
pip install --upgrade pandas==1.0.0rc0
成功安裝後,讓咱們來體驗一下全新版本的pandas
給咱們帶來了哪些使人興奮的功能吧。github
一直以來,pandas
中的字符串類型都是用object
來存儲的,此次更新帶來的新的更有針對性的StringDtye
主要是爲了解決以下問題:後端
object
類型對於字符串與非字符串混合的數據無差異的統一存儲爲一個類型,而如今的StringDtype
則只容許存儲字符串對象bash
咱們經過下面的例子更好的理解這個新特性,首先咱們在excel
中建立以下的表格(圖2),其包含兩列V1和V2,且V1中的元素並非純粹的字符串,混雜了數字,而V2則爲純粹的字符串列:markdown
在jupyter lab
中咱們首先讀入該數據並查看其具體信息:app
# 讀入StringDtype_test.xlsx並查看其具體信息 StringDtype_test = pd.read_excel('StringDtype test.xlsx') StringDtype_test.info()
能夠看到在數據讀入階段兩列都被看成object
型,接下來咱們使用astype
方法分別對兩列強制轉換類型爲string
,看看在咱們的新版本中會發生什麼(注意,在1.0.0
版本中StringDtype
的簡稱爲string
):編輯器
# 對V1進行強制類型 StringDtype_test['V1'].astype('string')
能夠看到,運行這段代碼後拋出了對應的錯誤,由於StringDtype
只容許字符串出現,包含數字1的V1便被拒絕轉換爲string
型,而對於V2:excel
# 對V2進行強制類型 StringDtype_test['V2'].astype('string')
則正常完成了數據類型的轉換,而pandas
中豐富的字符串方法對新的string
一樣適用,譬如英文字母大寫化:
StringDtype_test['V2'].astype('string').str.upper()
在新版本的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中打印出的markdown
格式表格放到編輯器中再修改了表格居中的效果,只要你的編輯器支持markdown
格式,就能夠這樣方便地生成表格:
A | B | |
---|---|---|
a | 1 | 1 |
a | 2 | 2 |
b | 3 | 3 |
咱們在過去版本對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未被重置:
接下來設置ignore_index參數爲True:
# ignore_index設置爲True df.sort_values(by='V1', ignore_index=True, ascending=False)
這時返回的結果就已經被重置了index:
sort_index()
和drop_duplicates()
效果同上,不重複展現。
新版本的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()
還有不少更新內容,好比爲rolling.apply()
新增了參數engine,以使用numba
後端極大提高numpy
相關運算速度等,這裏就再也不贅述,感興趣的讀者能夠前往 https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html 以上就是本文的所有內容,若有筆誤望指出!