最便捷方法 pandas 處理缺失值

2021-10-03 07:00:17 字數 1930 閱讀 6873

前言

最近看到一些教程關於「pandas讀取資料之後,如何處理缺失值或者如何替換指定值為另外乙個值」

看了那些教程,然後進行了一會實操,發現不能滿足我的需求,於是開始探索另外的解決辦法

下面來看一下解決方案

0x01、不設定預設載入空值為nankeep_default_na=false

df = pandas.read_excel("/home/project/day320/test.xlsx", keep_default_na=false)
注釋:pandas載入excel**,空值都是預設為 nan,即原始碼中keep_default_na=true

所以當我們想要空值就是空值的話,那麼可以設定keep_default_na=false,這時候,讀取出來的空值是空字串

可是,我的excel**之前就是存在很多 na 值的,這不能滿足我的需求,我其實是想將 na 值再還原回原來的空字串,所以請繼續看後面的方法

0x02、用dropna()、fillna()處理缺失值

存在下面的使用方法:

刪除空值:

df.dropna() # 缺省會刪除所有的空值,包含所有行裡面的、所有列裡面的空值

df.dropna(how="all") # 刪除全為 na 的行(即如果一整行的單元格都是na的話,那麼則刪除這一行)

df.dropna(axis=1, how="all") # 刪除全為 na 的列(即如果一整列的單元格都是na的話,那麼則刪除這一列)

判斷空值:

df.isnull() # 對應的返回布林值,檢視是否為空的資料

df.notnull() # 與上一條相反

填充缺失值:

df.fillna(value=2, inplace=true) # 對缺失的nan值全部替換為 0

df.fillna(value=2, method="ffill", limit=2)

- limit:表示可以連續填充的最大次數(對於前向和後向填充)

- value:需要填充的值,可以為標量(字串、數值等)或者字典物件

- inspace:表示是否在原來的物件上進行修改而不產生新的物件,true:在原基礎上修改;false:會返回處理後的,新的物件

前方高能,巨坑提示如果你的資料中其實看起來就是空值的,但是這時候有可能為 空白的字串 那麼,你使用fillna或者dropna是不會生效的!!!!

小結:對於一些不確定的,或者不一定為空的內容,還是不能直接使用這兩個dropnafillna這兩個來處理缺失值。

相關參考fillna和inplace使用文章,我進行了解

0x03、使用強大的replace來填充任何值的資料

pandas提供了乙個replace方法,並且這個方法可以使用正則來處理

df.replace(to_replace=r"^na$", value="", inplace=true, regex=true)

- to_replace:被替換的字元

- value:替換後的字元

- inplace:是否在原基礎上進行修改

- regex:是否為正規表示式方式

由於我的**裡面的空值都是寫著na的,所以對於我來說,使用這個方法是最好的乙個實現辦法

如果你的空白字元可能含有空格、換行、製表符等空白字元的話,可以使用這個正則來替換:

df.replace(to_replace=r"^\s*$", value="", inplace=true, regex=true)

Pandas 處理缺失資料

import numpy as np import pandas as pd from pandas import series,dataframes series a b np.nan,c d pd.isnull s 0 false 1 false 2 true 3 false 4 false d...

pandas處理缺失資料

na處理方法 方法 說明 dropna 根據各標籤的值中是否存在缺失資料對軸標籤進行過濾,可通過閾值調節對缺失值得容忍度 fillna 用指定值或插值方法 如ffill和bfill 填充缺失資料 isnull 返回乙個含有布林值的物件,這些布林值表示哪些值是缺失值na,該物件的型別與源型別一樣 no...

pandas處理日期缺失

兩種方法實現 1 dataframe.reindex 調整dataframe的索引以適應新的索引 2 dataframe.resample,可以對時間序列重新取樣,支援補充缺失值 import pandas as pd import os matplotlib inlinedf pd.datafra...