经常被人忽视的:Pandas 文本数据处理!
毋庸置疑,Pandas是使用最廣泛的 Python 庫之一,它提供了許多功能和方法來執行有效的數據處理和數據分析。
我們平時的操作,大多圍繞著數字的處理,這是因為大家習慣將表格數據與數字聯系起來。然而我們無論是使用Excel還是Pandas,其實都離不開文本類型的數據。
今天,我們會通過一個例子,總結這些常用的Pandas處理文本數據的操作。
首先,先創建一個帶有模擬數據的DataFrame。
import?pandas?as?pd df?=?pd.DataFrame({"姓":?["王","仲","寶",?"王",?"朱"],"名":?["玉環","覓晴","清俊",?"鴻博",?"小五"],"戶籍地址":?["黑龍江省·哈爾濱市",?"黑龍江省·哈爾濱市",?"黑龍江省·佳木斯市",?"廣西·柳州市",?"湖北省·武漢市"],"微信":?["Tomout",?"Sm857",?"Adamshffhhjfj",?"Tull88",?"ZPW505"],"郵箱":?["tom02@163.com",?"smitt@163.com",?"adams@163.com",?"tull03@163.com",?"five@163.com"] }) df一共五列文本數據:姓、名、戶籍地址、微信id、郵箱地址。
講個冷知識:微信id是不區分大小寫的。
如果將微信id這列的文本數據,全部轉換為小寫,在Pandas中可以這樣操作。
df["微信"]?=?df["微信"].str.lower() df我們可以通過組合姓氏和名字,來創建姓名這列。
df["姓名"]?=?df["姓"]?+?df["名"] df但是在默認情況下,新列會被添加在末尾。
想要更多的自定義選擇,可以參考下面的代碼。既可以在特定位置插入創建新列,也可以使用 cat 方法組合字符串(此處還可設置分隔符sep,這里并未設置)。
df.insert(2,?"姓名",?df["姓"].str.cat(df["名"],?sep="")) df對字符串的一個常見操作是拆分,當文本數據包含多條信息時,它就派上用場啦。
例如,戶籍地址這列包括省份和城市,我們可以通過拆分此列來提取城市的信息。
df["城市"]?=?df["戶籍地址"].str.split("·",?expand=True)[1] df對字符串的另一個常見操作是篩選過濾,那么在Pandas中如何操作呢?
如果想篩選“王”字開頭的姓名,既可以直接篩選 姓 這一列,也可以使用startswith()來過濾。
startswith() 和endswith() 這兩個函數,是分別基于字符串的第一個或最后一個字母進行篩選。
df[df["姓名"].str.startswith("王")]注意:startswith() 和endswith() 這兩個函數,還可以通過設置參數,既能檢測多個字符,又能設置字符串檢測的起始和結束位置。
如果想直接篩選包含特定字符的字符串,可以使用contains()這個方法。
例如,篩選戶籍地址列中包含“黑龍江”這個字符的所有行。
df[df["戶籍地址"].str.contains("黑龍江")]replace()方法可用于替換字符串中的字符序列,通過該方法可以修改Pandas中的文本數據。
df["戶籍地址"]?=?df["戶籍地址"].str.replace("廣西",?"廣西壯族自治區") df最后,我們還可以使用字符串的索引。
例如,我們可以用“str[:5]”表達式選擇前8個字符,用“str[-8:]”選擇后8個字符。
df["郵箱"].str[:5] df["郵箱"].str[-8:]本文已經羅列了在Pandas中比較常用文本數據處理操作,歡迎大家在評論區補充!
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)推薦閱讀牛逼!Python常用數據類型的基本操作(長文系列第①篇) 牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)牛逼!Python函數和文件操作(長文系列第③篇)牛逼!Python錯誤、異常和模塊(長文系列第④篇)總結
以上是生活随笔為你收集整理的经常被人忽视的:Pandas 文本数据处理!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐:两款实用的Jupyter插件~
- 下一篇: PyWebIO,让 Pandas 原地起