欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Pandas中處理NaN值的方法

 更新時間:2019年06月25日 10:44:55   作者:Johnny丶me  
這篇文章主要介紹了在Pandas中處理NaN值的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

關(guān)于NaN值

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

創(chuàng)建一個具有NaN值得 Data Frame

import pandas as pd

# We create a list of Python dictionaries
# 創(chuàng)建一個字典列表
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}]

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

# 顯示
store_items

顯示:

數(shù)據(jù)量大時統(tǒng)計NaN的個數(shù)

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

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

輸出:

在我們DataFrame中NaN的數(shù)量: 3

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

store_items.isnull()

顯示:

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

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

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

要使用該方法兩次,是因?yàn)榈谝粋€ sum() 返回一個 Pandas Series,其中存儲了列上的邏輯值 True 的總數(shù)

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

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

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

輸出:

在我們DataFrame的列中具有非NaN值得數(shù)量:
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)

顯示為:

store_items.dropna(axis = 1)

顯示為:

注意:

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

將NaN值替換為合適的值

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

store_items.fillna(0)

顯示:

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

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

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

顯示:

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

但是注意, store 1 中的 NaN 值沒有被替換掉。因?yàn)檫@列前面沒有值,因?yàn)?NaN 值是該列的第一個值。

現(xiàn)在,使用上個行值進(jìn)行前向填充

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

顯示:

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

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

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

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

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

注意:.fillna() 方法不在原地地替換(填充)NaN 值。也就是說,原始 DataFrame 不會改變。你始終可以在 fillna() 函數(shù)中將關(guān)鍵字 inplace 設(shè)為 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 值,圖片就省略了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • dataframe設(shè)置兩個條件取值的實(shí)例

    dataframe設(shè)置兩個條件取值的實(shí)例

    下面小編就為大家分享一篇dataframe設(shè)置兩個條件取值的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解Python3定時器任務(wù)代碼

    詳解Python3定時器任務(wù)代碼

    這篇文章主要介紹了Python3定時器任務(wù)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • python用opencv批量截取圖像指定區(qū)域的方法

    python用opencv批量截取圖像指定區(qū)域的方法

    今天小編就為大家分享一篇python用opencv批量截取圖像指定區(qū)域的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python urllib模塊urlopen()與urlretrieve()詳解

    Python urllib模塊urlopen()與urlretrieve()詳解

    Python urllib模塊urlopen()與urlretrieve()的使用方法詳解。
    2013-11-11
  • 跟老齊學(xué)Python之做一個小游戲

    跟老齊學(xué)Python之做一個小游戲

    經(jīng)過一段時間學(xué)習(xí),看官已經(jīng)不是純粹小白了,已經(jīng)屬于python初級者了?,F(xiàn)在就是開始做那個游戲的時候了。說是做游戲,不過還是先來點(diǎn)基礎(chǔ)知識吧
    2014-09-09
  • Anaconda入門使用總結(jié)

    Anaconda入門使用總結(jié)

    個人嘗試了很多類似的發(fā)行版,最終選擇了Anaconda,因?yàn)槠鋸?qiáng)大而方便的包管理與環(huán)境管理的功能。該文主要介紹下Anaconda,對Anaconda的理解,并簡要總結(jié)下相關(guān)的操作
    2018-04-04
  • python爬蟲獲取百度首頁內(nèi)容教學(xué)

    python爬蟲獲取百度首頁內(nèi)容教學(xué)

    在本篇內(nèi)容里小編給大家分享了關(guān)于python爬蟲獲取百度首頁內(nèi)容教學(xué),需要的朋友們可以跟著學(xué)習(xí)下。
    2018-12-12
  • 探索Python數(shù)據(jù)可視化庫中Plotly Express的使用方法

    探索Python數(shù)據(jù)可視化庫中Plotly Express的使用方法

    在數(shù)據(jù)分析和可視化領(lǐng)域,數(shù)據(jù)的有效呈現(xiàn)是至關(guān)重要的,python作為一種強(qiáng)大的編程語言,提供了多種數(shù)據(jù)可視化工具和庫,本文將介紹Plotly Express的基本概念和使用方法,幫助讀者快速入門并掌握數(shù)據(jù)可視化的技巧
    2023-06-06
  • Python 垃圾回收機(jī)制詳解

    Python 垃圾回收機(jī)制詳解

    這篇文章主要為大家介紹了Python 垃圾回收機(jī)制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 快速入門python學(xué)習(xí)筆記

    快速入門python學(xué)習(xí)筆記

    給大家分享一下python的一周快速學(xué)習(xí)入門的筆記,如果你希望最快速度學(xué)習(xí)python,這個非常適合你。
    2017-12-12

最新評論