91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Pandas中處理NaN值的方法

發布時間:2020-10-09 21:26:20 來源:腳本之家 閱讀:245 作者:Johnny丶me 欄目:開發技術

關于NaN值

-在能夠使用大型數據集訓練學習算法之前,我們通常需要先清理數據, 也就是說,我們需要通過某個方法檢測并更正數據中的錯誤。
- 任何給定數據集可能會出現各種糟糕的數據,例如離群值或不正確的值,但是我們幾乎始終會遇到的糟糕數據類型是缺少值。
- Pandas 會為缺少的值分配 NaN 值。

創建一個具有NaN值得 Data Frame

import pandas as pd

# We create a list of Python dictionaries
# 創建一個字典列表
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35, 'shirts': 15, 'shoes':8, 'suits':45},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5, 'shirts': 2, 'shoes':5, 'suits':7},
{'bikes': 20, 'pants': 30, 'watches': 35, 'glasses': 4, 'shoes':10}]

# 創建一個DataFrame并設置行索引
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2', 'store 3'])

# 顯示
store_items

顯示:

在Pandas中處理NaN值的方法

數據量大時統計NaN的個數

# 計算在store_items中NaN值的個數
x = store_items.isnull().sum().sum()

# 輸出
print('在我們DataFrame中NaN的數量:', x)

輸出:

在我們DataFrame中NaN的數量: 3

.isnull() 方法返回一個大小和 store_items 一樣的布爾型 DataFrame,并用 True 表示具有 NaN 值的元素,用 False 表示非 NaN 值的元素。

store_items.isnull()

顯示:

在Pandas中處理NaN值的方法

在 Pandas 中,邏輯值 True 的數字值是 1,邏輯值 False 的數字值是 0。

因此,我們可以通過數邏輯值 True 的數量數出 NaN 值的數量。

為了數邏輯值 True 的總數,我們使用 .sum() 方法兩次。

要使用該方法兩次,是因為第一個 sum() 返回一個 Pandas Series,其中存儲了列上的邏輯值 True 的總數

第二個 sum() 將上述 Pandas Series 中的 1 相加

除了數 NaN 值的數量之外,我們還可以采用相反的方式,我們可以數非 NaN 值的數量。為此,我們可以使用 .count() 方法

print('在我們DataFrame的列中具有非NaN值得數量分別為:\n', store_items.count())

輸出:

在我們DataFrame的列中具有非NaN值得數量:
bikes 3
glasses 2
pants 3
shirts 2
shoes 3
suits 2
watches 3
dtype: int64

處理這些 NaN 值

  • 如果 axis = 0,.dropna(axis) 方法將刪除包含 NaN 值的任何行
  • 如果 axis = 1,.dropna(axis) 方法將刪除包含 NaN 值的任何列
# 刪除包含NaN值得任何行
store_items.dropna(axis = 0)

顯示為:

在Pandas中處理NaN值的方法

store_items.dropna(axis = 1)

顯示為:

在Pandas中處理NaN值的方法

注意:

- .dropna() 方法不在原地地刪除具有 NaN 值的行或列。
- 原始 DataFrame 不會改變。你始終可以在 dropna() 方法中將關鍵字 inplace 設為 True,在原地刪除目標行或列。

將NaN值替換為合適的值

我們不再刪除 NaN 值,而是將它們替換為合適的值。例如,我們可以選擇將所有 NaN 值替換為 0。為此,我們可以使用 .fillna() 方法

store_items.fillna(0)

顯示:

在Pandas中處理NaN值的方法

我們還可以使用 .fillna() 方法將 NaN 值替換為 DataFrame 中的上個值,稱之為前向填充

.fillna(method = 'ffill', axis) 將通過前向填充 (ffill) 方法沿著給定 axis 使用上個已知值替換 NaN 值

store_items.fillna(method = 'ffill', axis = 0)

顯示:

在Pandas中處理NaN值的方法

注意 store 3 中的兩個 NaN 值被替換成了它們所在列中的上個值。

但是注意, store 1 中的 NaN 值沒有被替換掉。因為這列前面沒有值,因為 NaN 值是該列的第一個值。

現在,使用上個行值進行前向填充

store_items.fillna(method = 'ffill', axis = 1)

顯示:

在Pandas中處理NaN值的方法

在這種情況下:所有 NaN 值都被替換成了之前的行值

同時,也可以選擇用 DataFrame 中之后的值替換 NaN 值,稱之為后向填充

# 向后填充列,即為NaN的列值,用其列中的后一個來填充
store_items.fillna(method = 'backfill', axis = 0)

同理:也可以向后填充行,即為NaN的行值,用其行中的后一個來填充

# 向后填充行,即為NaN的行值,用其行中的后一個來填充
store_items.fillna(method = 'backfill', axis = 1)

注意:.fillna() 方法不在原地地替換(填充)NaN 值。也就是說,原始 DataFrame 不會改變。你始終可以在 fillna() 函數中將關鍵字 inplace 設為 True,在原地替換 NaN 值。

還可以選擇使用不同的插值方法替換 NaN 值

.interpolate(method = 'linear', axis) 方法將通過 linear 插值使用沿著給定 axis 的值替換 NaN 值, 這個差值也就是前后或者上下的中間值

store_items.interpolate(method = 'linear', axis = 0)

同時,也可用行值插入

store_items.interpolate(method = 'linear', axis = 1)

和我們看到的其他方法一樣,.interpolate() 方法不在原地地替換 NaN 值,圖片就省略了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜州市| 闵行区| 台北市| 扎赉特旗| 汽车| 老河口市| 莱西市| 沛县| 永胜县| 安阳市| 满城县| 惠安县| 耒阳市| 文山县| 玛沁县| 沅江市| 陈巴尔虎旗| 古丈县| 富宁县| 河北区| 福鼎市| 河曲县| 石台县| 崇阳县| 揭阳市| 安泽县| 休宁县| 通江县| 石景山区| 长子县| 西昌市| 奉贤区| 平度市| 巴里| 福安市| 霍城县| 博白县| 四会市| 赞皇县| 大足县| 凤庆县|