相信大多數朋友們在使用pandas讀取excel資料(如csv檔案)時,**中往往含有異常的值。這些異常值通過包括三大類: none,null,nan。但是none和null通常可以通過「==」來判斷,相對比較簡單,因此本文主要介紹對nan異常值的處理。眾所周知,nan其實指的是not a number,也就是說不是乙個數。
在pandas dataframe中判斷是否含有nan值的方法是pd.isna(),下面就以實際例子給大家展示下:
1.首先這是使用pandas讀出來的原始資料,從下圖中可以看到其中包含很多nan值。
2.使用isna()方法會返回乙個僅含true和false這兩種值的dataframe,該方法主要用來判斷**中的每乙個元素是否為nan,使用方法很簡單,就是your_dataframe.isna(),最後得到的結果如下圖所示。可以看到,之前為nan值的那些位置,都已經成功判斷出來了。
3.使用isna().any()方法會返回乙個僅含true和false這兩種值的series,這個方法主要是用來判斷所有列中是否含有nan值,使用方法也是your_dataframe.isna().any(),返回的結果如下圖所示。
由於筆者這個表中沒有全部為nan的行或列,執行後表也不會有絲毫變化,這裡就不放結果圖了,下面主要介紹下使用的方法。
1.刪除dataframe表中全部為nan的行
your_dataframe.dropna(axis=0,how='all')
2.刪除dataframe表中全部為nan的列
your_dataframe.dropna(axis=1,how='all')
1.刪除表中含有任何nan的行
your_dataframe.dropna(axis=0,how='any')
刪除之後的結果如下圖所示,結合第二步中的原始資料可知,表中第1、3、6、7這四行中含有nan值,所以下圖中這幾行被成功刪除。
2.刪除表中含有任何nan的列
your_dataframe.dropna(axis=1,how='any')
刪除之後的結果如下圖所示,結合第二步中的原始資料可知,表中「ramcapacity」、 「ramleftration」、 「romcapacity」、 「romleftration」、 「fontsize」、 「ct」這幾列中含有nan值,所以下圖中這幾列被成功刪除。
替換所有 nan 的值主要用的是fillna()方法,其具體使用方法如下:
# 可以
replace_value = 0.0
# 這裡設定 inplace 為 true,能夠直接把表中的 nan 值替換掉
your_dataframe.fillna(replace_value, inplace=true)
# 如果不設定 inplace,則這樣寫就行
# new_dataframe = your_dataframe.fillna(replace_value)
替換後的結果如下所示,可以看到所有nan值都已成功替換。
Pandas DataFrame用法總結
1 將某一列滿足條件的資料的所在行提取出來 df ori pd.read excel f ivf data data add yuejing time data arrange no null23.xlsx df new df ori df ori.iloc 2 0.6 將某一列滿足條件 0.6 的...
Pandas DataFrame常用方法
1 獲取列名 1.1.鍊錶推導式 語法 col for col in df 返回結果 cvr1 cvr2 cvr3 cvr4 結果型別 list 1.2.通過columns屬性 columns屬性返回index,columns.values屬性返回 numpy.ndarray,可通過 tolist ...
Pandas DataFrame 按行構建
當我們從複雜 提取出逐個樣本的特徵時,繼而構成一條樣本並組成訓練或測試集時,比較容易想到的一點就是一行一行地構建dataframe。而pandas.dataframe 容許的輸入有numpy ndarray structured or homogeneous dict,or dataframe這些 ...