使用isna
函式,返回值為每個位置是否缺失的邏輯變數。
檢視某一列缺失的行,可以根據isna
的返回值進行索引,例如:
df[df.height.isna()].head()
如果要檢視多個列的情況,可以使用any
和all
。
例如,isna+all
檢視三個列同時缺失:
sub_set = df[['height', 'weight', 'transfer']]
df[sub_set.isna().all(1)]
isna+any
:至少乙個缺失
df[sub_set.isna().any(1)].head()
notna+all
:沒有缺失
df[sub_set.notna().all(1)].head()
使用dropna
函式:
例如,刪除身高體重至少有乙個缺失的行:
res = df.dropna(how = 'any', subset = ['height', 'weight'])
按照第一節的內容,也可以寫作:
subset = ['height', 'weight']
res = df[sub_set.notna().all(1)] #即索引沒有乙個缺失的
刪除超過15個缺失值的列:
res = df.dropna(1, thresh=df.shape[0]-15)
使用fillna
函式:
下面看具體的使用例子:
s = pd.series([np.nan, 1, np.nan, np.nan, 2, np.nan],
list('aaabcd'))
sout[336]:
a nan
a 1.0
a nan
b nan
c 2.0
d nan
dtype: float64
使用前值填充:
s.fillna(method='ffill')
out[337]:
a nan
a 1.0
a 1.0
b 1.0
c 2.0
d 2.0
dtype: float64
連續缺失值,最多填充一次:
s.fillna(method='ffill', limit=1)
out[338]:
a nan
a 1.0
a 1.0
b nan
c 2.0
d 2.0
dtype: float64
通過索引對映填充:
s.fillna()
out[339]:
a 100.0
a 1.0
a 100.0
b nan
c 2.0
d 200.0
dtype: float64
練一練:
解答:
生成乙個序列:
s = pd.series([1,np.nan, 3,np.nan,np.nan])
sout[342]:
0 1.0
1 nan
2 3.0
3 nan
4 nan
dtype: float64
先用前值填充,然後再用後值填充,最後取平均:
a = s.fillna(method = 'ffill',limit=1)
b = s.fillna(method = 'bfill',limit=1)
s = (a+b)/2
s0 1.0
1 2.0
2 3.0
3 nan
4 nan
dtype: float64
使用interpolate
函式,預設為線性插值:
生成乙個序列:
s = pd.series([np.nan, np.nan, 1,
....: np.nan, np.nan, np.nan,
....: 2, np.nan, np.nan])
sout[361]:
0 nan
1 nan
2 1.0
3 nan
4 nan
5 nan
6 2.0
7 nan
8 nan
dtype: float64
線性向後插值,最大連續個數為1:
res = s.interpolate(limit_direction='backward', limit=1)
resout[358]:
0 nan
1 1.00
2 1.00
3 nan
4 nan
5 1.75
6 2.00
7 nan
8 nan
dtype: float64
最近鄰插值,使用離缺失值最近的元素:
res = s.interpolate('nearest')
resout[363]:
0 nan
1 nan
2 1.0
3 1.0
4 1.0
5 2.0
6 2.0
7 nan
8 nan
dtype: float64
索引插值,根據索引的大小進行線性插值:
s = pd.series([0,np.nan,10],index=[0,1,10])
sout[365]:
0 0.0
1 nan
10 10.0
dtype: float64
s.interpolate(method='index')
out[36]:
0 0.0
1 1.0
10 10.0
dtype: float64
Go學習之旅 Task7
在go語言中函式定義格式如下 func functionname parameter list returntypes 例1 下面的函式是用於求兩個數的和 func getsum num1 int num2 int int 這個函式傳遞了兩個引數,分別為num1與num2,並且他們都為int型別,將...
動手學深度學習Task7
一 優化演算法高階 二 word2vec 三 詞嵌入高階 一 優化演算法高階 在 section 11.4 中,我們提到,目標函式有關自變數的梯度代表了目標函式在自變數當前位置下降最快的方向。因此,梯度下降也叫作最陡下降 steepest descent 在每次迭代中,梯度下降根據自變數當前位置,沿...
《李巨集毅機器學習》task7
熵是用來衡量乙個系統混論程度的物理量,代表乙個系統中蘊含多少資訊量,資訊量越大表明乙個系統不確定性就越大,就存在越多的可能性。演算法支援模型 樹結構特徵選擇 連續值處理 缺失值處理 剪枝id3 分類多叉樹 資訊增益 不支援不支援 不支援c4.5 分類多叉樹 資訊增益比 支援支援 支援cart 分類 ...