python在txt中的替換資料清洗 資料清洗

2021-10-14 02:23:06 字數 2471 閱讀 4137

資料清洗是資料分析的基礎工作,但是資料清洗佔據了整個資料分析絕大部分的工作量。很多業務資料都是從各個渠道收集過來的,不可避免的有一些缺失資料、重複的資料、單位不統一的資料(比如體重,有的渠道收集的是kg,有的渠道收集的可能是斤)、甚至是明顯錯誤的資料(比如人的年齡不可能是負數,但是收集上來的資料,年齡這個字段竟然有負值)等。

資料清洗的工作就是保證取得的資料盡可能乾淨、完整且符合邏輯,為後續的資料統計、分析、挖掘做好準備。

今天就以乙個例子,講一講用python進行資料清洗的一些常用函式。

這是一家運動店的部分會員資料,第一列是會員的id號,第二列是會員的姓名,第三列是會員的註冊日期,第四列是會員的年齡,第五列是會員所在的城市,第六列是會員的身高,第七列是會員的體重,第八列是會員的興趣愛好。

我們發現這些資料有很多的空值,姓名有重複,體重的單位不一致,看起來非常的亂。現在我們就要對這些資料進行清洗。實際的業務遠比我們現在看到的這張表複雜,資料維度可能多達五六十個,資料量可能也是千萬級別的,如果僅僅用肉眼來觀察,想要找到問題可以說是非常困難。

一、資料分列

name這一列包含firstname和lastname,我們可以把name拆分成兩列,這樣看起來更整潔。

二、刪除重複項

刪除重複值的時候,一定要選取能夠識別為唯一性的列,且這一列確實能夠代表唯一,這樣可以避免刪除掉正確值。

舉個例子,身份證號碼是唯一的,沒有人的身份證號碼是重複;手機號碼也是具有唯一性,同乙個手機號碼不會被不同的兩個人使用。

由於我們只是熟練使用函式,所以就用firstname和lastname這兩列作為唯一性的判斷,如果有重複的話就刪除。實際上姓名完全有可能是重複的,同名的人很多。

python中使用drop_duplicates函式刪除重複值,drop_duplicates有乙個引數是keep,keep的預設值是first,也就是保留第乙個出現的值,刪除後面的重複值。如果引數keep='last'的話,就會刪除最先出現的重複值,保留最後的值。

上面的例子中,keep預設是first,所以保留了第乙個出現的michal jordan,第二個出現同一樣的名字就被刪除了。

三、處理空值

處理空值一般是刪除或者填充。刪除很好理解,就是直接將空值所在的行刪除掉;填充的話,有很多方式,可以0值填充,也可以用平均值填充,還可以用出現頻次最多的值填充。

我們先看刪除,刪除可以按照空值的個數刪除,比如你有60個字段,如果其中有6個字段是空值的話就刪除,可以用thresh = 6來實現;我們還可以選取特定的字段來刪除,比如如果name有空值就刪除,可以用subset = ['age']

因為我這個案例,身高後面帶有單位,所以如果要用平均值填充的話,需要先替換掉單位,然後轉換成int型別,再求平均值,所以看起來比較繁瑣。實際上一般數值都不會有單位在後面,直接填充即可。

四、單位統一

weight這一列出現了kg和jin,我們需要將單位統一,比如將jin轉換成kg。

轉換後,我們發現weight這一列還有空值,如果空值需要用平均值填充,可以參考第三條。

五、清除空格

如果欄位中包含空格,可以用strip函式去除

六、數值替換

city這一列上海有兩種寫法,乙個是shanghai,乙個是sh縮寫,如果我們要將sh替換成shanghai,可以使用replace函式

七、大小寫轉換

firstname和hobby這兩列,有的開頭是大寫,有的開頭是小寫,我們需要統一一下,這樣看起來更整潔

八、更改資料格式

age這一類的資料型別是float,我們將這一列的資料轉換成int

一些常用的資料清洗函式就介紹到這裡。通過清洗後的資料,看起來比之前乾淨整潔多了。而且在清洗資料的過程,我們對這些資料會更加的熟悉。熟悉之後,結合業務,可能會有更深的理解。

MATLAB替換TXT檔案中的指定行的全部內容

在上述文章章末這樣寫道 根據matlab的幫助檔案,實現重寫有兩種辦法,一種是替換的內容的長度等於原來一行內容長度的時候,可以精確替換,另一種是替換的內容的長度大於原來一行內容長度的時候,這一行之後的所有行都要重新寫。在本人學習研究之後,發現若txt文件很大 長 替換的內容的長度大於原來一行內容長度...

Python中替換元素

假設現在班裡仍然是3名同學 l adam lisa bart 現在,bart同學要轉學走了,碰巧來了乙個paul同學,要更新班級成員名單,我們可以先把bart刪掉,再把paul新增進來。另乙個辦法是直接用paul把bart給替換掉 l 2 paul print l l adam lisa paul ...

python讀取txt檔案中的資料

讀取txt檔案中的某一列 int l.split 0 for l in open a.txt 但是讀不了最後一列,出現 indexerror list index out of range的問題。參考 講的很詳細,對於這樣的問題 每行有3列,依次讀取,空格間隔,分別將每行的不同列存到不同的陣列a,b...