首頁 > 軟體

pandas如何將表中的字串轉成數值型

2023-02-24 06:00:50

pandas將表中的字串轉成數值型

在用pd.read_csv讀資料時,將要轉換資料型別的列名和型別名構成字典,傳給dtype

import numpy as np
import pandas as pd

path = 'house_data.csv'
col = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS',
       'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dict_dtype = {}
for i in col:
    dict_dtype[i] = np.float64
# print(dict_dtype)

data = pd.read_csv(path, header=None, names=col, sep=',', dtype=dict_dtype)

擴充套件:pandas 把某一列中字串變數值_Pandas對文字資料處理

在處理資料的時候,對數值型的資料處理還是比較方便的,但是有時候數值型資料出現問題後就會比較頭痛了,因為文字資料的排列組合可是有很多很多的,今天我們就學習一下如何對文字資料進行處理,這樣我們接下來在工作中遇到了這些情況就可以少掉一下頭髮啦。

一、str屬性

文字資料也就是我們常說的字串,pandas為series提供了str屬性,通過它可以方便對每個元素進行操作。

為了防止資料被弄壞,我們先預留一個備份以防萬一。

這裡我們是不能使用backup_user_info = user_info的因為這樣的話一個更改另外一個也會更改。

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

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

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

首先更改為英文

然後設定一個函數,將星球改為大寫,原理為upper()方法

然後在設定為小寫,原理為lower方法

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

我們通過str屬性來存取之後用到的方法名與 Python 內建的字串的方法名一樣。並且能夠自動排除缺失值。 我們再來試試其他一些方法。例如,統計每個字串的長度。

將cm替換成空白的字串

將身高列的元素型別轉換為整數型

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

檢視表的元素型別

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

檢視城市列中每個元素有幾個字

檢視年不年輕列中每個元素是否有輕這個字串

二、替換和分隔

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

將列中的資料進行分隔

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

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

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

在表中新增一列英雄的愛人列

將愛人列以,號分隔

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

將索引列改為英雄姓名,並檢視蜘蛛俠和滅霸的愛人

三、提取子串

既然是在操作字串,很自然的大家可能會想到是否可以從一個長的字串中提取出子串。答案是可以的。

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

extract方法接受一個正規表示式並至少包含一個捕獲組,指定引數 expand=True可以保證每次都返回DataFrame。例如,現在想要匹配空字串前面的所有的字母,可以使用如下操作:

檢視哪位英雄的所在的星球包括E這個字串

檢視哪位英雄所在的城市包括紐這個字串

四、生成啞變數

首先我們先了解一下什麼是啞變數:

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

在pandas中我們可以通過get_dummies 方法可以將字串轉為啞變數,sep 引數是指定啞變數之間的分隔符。

對英雄姓名進行啞變數轉換

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

對那個星球進行啞變數轉換

從結果可以看出,在地球的英雄是第0、2、3、4、6行的,對應的英雄名稱為(蜘蛛俠、奇異博士、鋼鐵俠、蝙蝠俠、黑寡婦)

到此這篇關於pandas將表中的字串轉成數值型的文章就介紹到這了,更多相關pandas字串轉成數值型內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com