那麽,數據清洗到底是什麽?
壹般來說,您獲取的原始數據不能直接用於分析,因為它們會存在各種問題,如無效信息、列名不規範、格式不壹致、重復值、缺失值、異常值等。.....
本文將介紹使用Python附帶的Pandas和NumPy庫清理數據的壹些實用技巧。
這是讀取數據的入門級命令。在分析數據集時,實際上並不需要很多信息。因此,需要刪除不必要的行或列。以csv文件為例,在導入時設置pd.read_csv()中的參數即可實現這壹目的。
我們先來感受壹下官方文件中給出的詳細解釋。裏面有相當多的參數。本文只介紹幾種常用的。如果妳感興趣,妳可以好好研究壹下這個文件。這些參數仍然非常易於使用,並且在導入後可以節省大量工作。
當原始數據的列名不容易理解或不夠簡潔時,可以使用。rename()方法來修改它們。這裏我們將英文列名改為中文,首先創建壹個字典,定義要修改的列名,然後調用rename()方法。
數據的默認索引是從0開始的有序整數,但是如果要將列設置為新索引,可以使用read_csv()中的參數index_col和的方法。集索引()。
此外,如果數據被刪除或重組,我們可以重置索引,使索引從0開始依次排序。
字符串str操作非常實用,因為列中總是包含不必要的字符,常用的方法如下:
Str.lower()將大寫轉換為小寫,同樣地,str.upper()將小寫轉換為大寫,並將示例中由大寫字母表示的索引轉換為小寫。
設置初始大寫
str . replace(“a“,““)替換特定字符。這裏,列中的A被刪除並替換為空白字符。
從字符串中刪除前導空格和尾隨空格。
str . split(‘x‘)使用字符串中的‘x‘字符作為分隔符將字符串分隔成壹個列表。這裏,列中的值除以“。”。
Str.get()選擇列表中某個位置的值。然後,我們使用str . get(0)取出列表中前壹個位置的值並生成壹個新列。
Str.contains()確定字符是否存在,並返回壹個布爾值。
str . find(“-“)檢測字符串是否包含“-“,如果是,則返回子字符串起始位置的索引值;如果不是,則返回-1。
學習完字符串操作的基本方法後,我們再來看看如何結合NumPy來提高字符串操作的效率。
我們可以結合。Pandas中的str()方法和NumPy的np.where函數。np.where函數是Excel的IF()宏的矢量化形式,其語法如下:
如果條件條件為真,則執行,否則執行。這裏的條件可以是類數組的對象,也可以是布爾表達式,我們還可以使用np.where函數嵌套多個條件進行矢量化計算和判斷。
接下來,我們需要整理列中的字符串。除了循環和。str()方法,我們也可以選擇使用applymap()方法,該方法將作用於整個DataFrame的所有行和列中的每個元素。
首先定義函數get _ city state(item),它的作用是只提取元素中的有效信息。然後,我們將此函數傳遞到applymap()中,並將其應用於df3。看起來是不是幹凈多了?結果如下:
如果妳沒有聽說過它,我不能強調它的重要性。輸入以下命令:
妳會發現df1發生了變化。這是因為df2 = df1不會生成df1的副本並將其分配給df2,而是設置壹個指向df1的指針。所以只要是針對df2的變化,也會相應作用於df1。為了解決這個問題,您可以這樣做:
您也可以這樣做:
該命令用於檢查值的分布。您想要檢查“C”列中的值以及每個值的頻率,可以使用:
以下是壹些有用的提示/參數:
Lsin()用於過濾數據幀。Isin()有助於選擇特定列中具有特定(或多個)值的行。
在SQL中,我們可以使用select * from...其中ID in(‘a 001‘,c022,...)來獲取具有指定id的記錄。如果妳想在Pandas中做類似的事情,妳可以使用:
select_dtypes()的功能是基於dtypes返回數據框列的子集。此函數的參數可以設置為包括具有特定數據類型的所有列,或者排除具有特定數據類型的列。
Pivot_table()在Pandas中也是壹個非常有用的函數。如果您了解excel中pivot_table()的使用方法,那麽入門將非常容易。
如果需要計算樣本缺失率的分布,只需添加參數axis=1。
有兩種類型的分組:重復值和非重復值。沒有重復值的情況下。
首先,按Mt列分組,然後使用idxmax函數取出分組數據框的最大計數所在的列,然後使用iloc位置索引取出行。有重復的值。
將id分組後,對分數應用等級函數。如果分數相同,則給予相同的排名,然後取出排名為1的數據。
本文介紹了兩種有效的組內排序方法。
以這種方式轉換第三列將導致錯誤,因為該列包含代表0的下劃線,而pandas無法自動判斷該下劃線。要解決這個問題,您可以使用to_numeric()函數來處理第三列,並讓pandas將任何無效輸入轉換為NaN。
df = df . apply(PD . to _ numeric,errors =‘concert‘)。菲爾納(0)
方法1:只讀取真正需要的列,並使用usecols參數。
方法二:將包含類別數據的對象列轉換為類別數據類型,通過指定dtype參數來實現。
希望本文的內容能給妳的學習或工作帶來壹些幫助,每天進步壹點點。加油~