pandas檢視缺失資料佔比(實戰)

2021-10-10 13:55:26 字數 3746 閱讀 6576

在資料建模前,需要檢視每一列資料的缺失情況,當缺失值的佔比超過一定閾值,就需要考慮,這一列資料(或者這乙個變數)是否需要參與建模。一般選用的閾值在0.9,即:當某乙個變數的缺失值佔比達到90%以上,就需要刪除。

這裡選用pandas作為主要的資料分析工具,感興趣的讀者可以去pandas官網逛逛,下面開始介紹,如何用pandas檢視每乙個變數的缺失佔比情況,以及繪製出變數缺失分布的柱狀圖。

import pandas as pdimport numpy as np
df = pd.dataframe(data=)
a     b     c   d0   nan   nan   nan  121   nan   nan  12.0  132   nan  12.0  13.0  143  12.0  13.0  14.0  154  13.0  14.0  15.0  165  14.0  15.0  16.0  17
((df.isnull().sum())/df.shape[0]).sort_values(ascending=false).map(lambda x:"".format(x))a    50.00%b    33.33%c    16.67%d     0.00%dtype: object
可以看到,a變數的缺失值佔比為50%,b變數的缺失值佔比為33.33%,c變數的缺失值佔比為16.67%,d變數缺失值佔比為0%。

如果考慮到閾值為0.5,那麼a變數就需要刪除。關於這段**的詳細步驟,在下面會有解釋說明。

通過第四步的操作,可以看出資料的缺失佔比情況;

這裡需要畫出資料每乙個變數的缺失柱狀圖,考慮到有些變數沒有缺失值,所以這裡選用非缺失資料的佔比情況,如下:

bar_dict = ((df.notnull().sum())/df.shape[0]).sort_values(ascending=false).to_dict()#
pyecharts是我在工作中主要使用的視覺化工具,所以這裡選用pyecharts來繪製分布柱狀圖。感興趣的讀者可以去pyecharts官網逛逛。

這裡,為了柱狀圖的美觀,需要對數字的顯示格式設定一下,將資料從小數轉為百分比資料,設定如下:

label_opts=opts.labelopts(is_show=true,formatter='%')
詳細繪圖**如下:

from pyecharts.charts import barfrom pyecharts import options as optsfrom pyecharts.globals import _warningcontrol_warningcontrol.showwarning = falsec = (bar().add_xaxis(list(bar_dict)).add_yaxis("非缺失資料佔比",[round(i*100,2) for i in list(bar_dict.values())],label_opts=opts.labelopts(is_show=true,formatter='%'),).set_global_opts(title_opts=opts.titleopts(title="缺失資料分析")))c.render_notebook()

((df.isnull().sum())/df.shape[0]).sort_values(ascending=false).map(lambda x:"".format(x))
iisnull()方法作用於df中的每乙個值,如果這個值為nan,則為true,否則為false,最終返回乙個與df有著相同行/列的dataframe物件。

notnull()方法作用於df中的每乙個值,如果這個值為nan,則為false,否則為true,最終返回乙個與df有著相同行/列的dataframe物件。

# df.isnull()a      b      c      d0   true   true   true  false1   true   true  false  false2   true  false  false  false3  false  false  false  false4  false  false  false  false5  false  false  false  false# df.notnull()a      b      c     d0  false  false  false  true1  false  false   true  true2  false   true   true  true3   true   true   true  true4   true   true   true  true5   true   true   true  true
求和計算,常用的引數

axis:求和方向,1表示求每一行的和,0表示求每一列的和。(預設為0)

# df.sum()a    39.0b    54.0c    70.0d    87.0dtype: float64# df.sum(axis=1)0    12.01    25.02    39.03    54.04    58.0
獲取行和列,返回元組(行,列)

# df.shape(6, 4)
按照某一字段排序

by:按照某一列的資料排序,

ascending:false為降序,true為公升序,(預設為true)

pandas.series.map()

# 將每乙個小數值變為百分比pandas.series.map(lambda x:"".format(x))

Pandas 缺失資料

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

Pandas缺失資料

一 缺失值的統計和刪除 缺失資訊的統計 資料處理中經常需要根據缺失值的大小 比例或其他特徵來進行行樣本或列特徵的刪除,pandas中提供了dropna函式來進行操作。dropna的主要引數為軸方向axis 預設為0,即刪除行 刪除方式how 刪除的非缺失值個數閾值thresh 非 缺 失 值 col...

pandas 缺失資料

檢視缺失的比例 全部缺失 df sub set.isna any 1 head 至少有乙個缺失 沒有缺失 資料處理中經常需要根據缺失值的大小 比例或其他特徵來進行行樣本或列特徵的刪除,pandas中提供了dropna函式來進行操作。dropna的主要引數為軸方向axis 預設為0,即刪除行 刪除方式...