Pandas對文本數據處理

在處理數據的時候,對數值型的數據處理仍是比較方便的,可是有時候數值型數據出現問題後就會比較頭痛了,由於文本數據的排列組合但是有不少不少的,今天咱們就學習一下如何對文本數據進行處理,這樣咱們接下來在工做中遇到了這些狀況就能夠少掉一下頭髮啦。正則表達式

1、str屬性app

文本數據也就是咱們常說的字符串,pandas爲series提供了str屬性,經過它能夠方便對每一個元素進行操做。函數

爲了防止數據被弄壞,咱們先預留一個備份以防萬一。學習

這裏咱們是不能使用backup_user_info = user_info的由於這樣的話一個更改另一個也會更改。spa

在以前咱們也已經瞭解過,在對series中每一個元素處理時,咱們可使用map或apply方法,好比咱們想把星球列下面的地球和外星轉換爲英文,可使用下面的方式。索引

這時候咱們在將表恢復成原來的樣子。rem

  • 將哪一個星球列下的星球改成大寫的英文後再改成小寫

首先更改成英文字符串

而後設置一個函數,將星球改成大寫,原理爲upper()方法get

而後在設置爲小寫,原理爲lower方法pandas

  • 給英雄們的身高加上一個單位

咱們經過str屬性來訪問以後用到的方法名與 Python 內置的字符串的方法名同樣。而且可以自動排除缺失值。 咱們再來試試其餘一些方法。例如,統計每一個字符串的長度。

  • 將cm替換成空白的字符串

  • 將身高列的元素類型轉換爲整數型

  • 生成一個新的列,列名爲姓名的長度,元素爲英雄姓名的長度(len方法)

  • 查看錶的元素類型

  • 將年不年輕列的中的中年屬性更改成中老年屬性

查看城市列中每一個元素有幾個字

  • 查看年不年輕列中每一個元素是否有輕這個字符串

2、替換和分隔

使用.srt屬性也支持替換與分割操做。先來看下替換操做,例如:將大寫的R轉換爲小寫的r。

  • 將列中的數據進行分隔

將是否年輕按年進行分隔,結果如上所述。

分割列表中的元素可使用 get 或 [] 符號進行訪問:

好比說電影的主演有不少人, 多是用逗號, 或者/ 進行分割, 這是能夠用這種方法轉換成列表

  • 在表中添加一列英雄的愛人列

將愛人列以,號分隔

這時候就可讓某一行的這個元素以列表表現出來。

將索引列改成英雄姓名,並查看蜘蛛俠和滅霸的愛人

3、提取子串

既然是在操做字符串,很天然的你們可能會想到是否能夠從一個長的字符串中提取出子串。答案是能夠的。

一、提取第一個匹配的子串

extract方法接受一個正則表達式並至少包含一個捕獲組,指定參數 expand=True能夠保證每次都返回DataFrame。例如,如今想要匹配空字符串前面的全部的字母,可使用以下操做:

  • 查看哪位英雄的所在的星球包括E這個字符串

  • 查看哪位英雄所在的城市包括紐這個字符串

4、生成啞變量

首先咱們先了解一下什麼是啞變量:

啞變量原名爲虛擬變量 ( Dummy Variables) 又稱虛設變量、名義變量或啞,用以反映質的屬性的一我的工變量,是量化了的自變量,一般取值爲0或1。引入啞變量可以使線形迴歸模型變得更復雜,但對問題描述更簡明,一個方程能達到兩個方程的做用,並且接近現實。

在pandas中咱們能夠經過get_dummies 方法能夠將字符串轉爲啞變量,sep 參數是指定啞變量之間的分隔符。

  • 對英雄姓名進行啞變量轉換

從結果能夠看出,第0行的英雄姓名是蜘蛛俠,第1行的英雄姓名是滅霸,啞變量轉換就是將每個選擇匹配哪一行的數據。

  • 對那個星球進行啞變量轉換

從結果能夠看出,在地球的英雄是第0、二、三、四、6行的,對應的英雄名稱爲(蜘蛛俠、奇異博士、鋼鐵俠、蝙蝠俠、黑寡婦)

相關文章
相關標籤/搜索