最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于Pandas缺失值inf與nan的處理實踐

 更新時間:2023年06月21日 15:23:26   作者:肖永威  
這篇文章主要介紹了關于Pandas缺失值inf與nan的處理實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1. Pandas缺失值

對于表格數(shù)據(jù)而言,缺失值分為三種:

  • 一是Pandas中的空值(NaN)
  • 二是Pandas中的正負無窮(inf),嚴格意義上也不算缺失值,表示無窮!
  • 三是自定義的缺失值。

1.1. Pandas中的空值

Pandas中的空值有三個:np.nan (Not a Number) 、 None 和 pd.NaT(時間格式的空值,注意大小寫不能錯),這三個值可以用Pandas中的函數(shù)isnull(),notnull(),isna()進行判斷。

isnull()和notnull()的結果互為取反,isnull()和isna()的結果一樣。

需要特別注意三點:

1.如果某一列數(shù)據(jù)全是空值且包含pd.NaT,np.nan和None會自動轉換成pd.NaT。

2.空值(np.nan、None、pd.NaT)既不是空字符串"“,也不是空格” "。

3.None是 一個 Python 對象

  • 不可以用在任意的 NumPy 或 Pandas 數(shù)組里,只用于列表且數(shù)據(jù)類型是 Object。
  • 默認 Pandas 會將 None 轉換成 NAN
  • 對包含 None 元素的數(shù)組進行計算(如: sum, min, max)會拋出 TypeError 異常。
import pandas as pd
import numpy as np
df = pd.DataFrame({'float': [1.3,5.2,np.nan],
                   'int': [1,8,None],
                   'datetime': [pd.Timestamp('2018-03-10'),pd.NaT,pd.NaT],
                   'string': ['python','pandas','numpy']})

例如通過df.isnull()查看缺失情況。

1.2. Pandas中的正負無窮

對于特別大的數(shù)字,或者除數(shù)為0時,將產(chǎn)生正負無窮,Pandas中用np.inf表示。

import pandas as pd
import numpy as np
df = pd.DataFrame({'float': [1.3,5.2,np.nan],
                   'int': [1,8,None],
                   'datetime': [pd.Timestamp('2018-03-10'),pd.NaT,pd.NaT],
                   'string': ['python','pandas','numpy']})
df['inf'] = df['float']/0

1.3. 自定義缺失值

自定義缺失值有很多不同的形式,如上面剛說的空字符串和空格(當然,一般不用這兩個,因為看起來不夠直觀)。

在獲取數(shù)據(jù)時,可能會有一些數(shù)據(jù)無法得到,也可能數(shù)據(jù)本身就沒有,造成了缺失值。

對于這些缺失值,在獲取數(shù)據(jù)時通常會用一些符號之類的數(shù)據(jù)來代替,如問號?,斜杠/,字母NA等。

2. 處理缺失數(shù)據(jù)

2.1. 用數(shù)組過濾

  • 用 df.isin([np.nan, np.inf, -np.inf]) 方法
  • 用 df.any() 方法只要包含任意一個缺失的值,any()一個序列中滿足一個True,則返回True
  • 最后,用 布爾數(shù)組來進行切分。
import pandas as pd
import numpy as np
df = pd.DataFrame({'float': [1.3,5.2,np.nan],
                   'int': [1,8,None],
                   'datetime': [pd.Timestamp('2018-03-10'),
                            pd.Timestamp('2019-05-10'),pd.NaT],
                   'string': ['python','pandas','numpy']})
df[~df.isin([np.nan, np.inf, -np.inf]).any(axis=1)]

2.2. 替換 inf 和 -inf 成 NaN, 然后選擇非空的行數(shù)據(jù)

  • 用df.replace([np.inf, -np.inf], np.nan),把正負無窮為空值np.nan
  • 再用df.notnull(),篩選非空數(shù)據(jù)
  • 再用df.all(),all()一個序列中所有值為True時,返回True,否則為False。
import pandas as pd
import numpy as np
df = pd.DataFrame({'float': [1.3,5.2,np.inf],
                   'int': [1,8,None],
                   'datetime': [pd.Timestamp('2018-03-10'),pd.NaT,
                                pd.Timestamp('2019-05-10')],
                   'string': ['python','pandas','numpy']})
df
df['inf'] = df['float']/0
df
df['inf'].replace(np.inf, 0, inplace=True)
df
df[df.replace([np.inf, -np.inf], np.nan).notnull().all(axis=1)]
#df[df.notnull().all(axis=1)]

2.3. 替換 inf 和 -inf 成 NaN,再用dropna() 方法刪除為空的數(shù)據(jù)

pandas中的dataframe對象,刪除缺失值的方式:

  • df.dropna(how=‘all’) #刪除所有內(nèi)容均為缺失值的行
  • df.dropna(axis=1) #丟棄有缺失值的列
  • df.dropna(axis=1, how = ‘all’) #丟棄所有列中所有值均缺失的列
import pandas as pd
import numpy as np
df = pd.DataFrame({'float': [1.3,5.2,np.inf],
                   'int': [1,8,None],
                   'datetime': [pd.Timestamp('2018-03-10'),pd.NaT,
                                pd.Timestamp('2019-05-10')],
                   'string': ['python','pandas','numpy']})
df['inf'] = df['float']/0
df
df.dropna(axis=1).head(3)
df.replace([np.inf, -np.inf], np.nan).dropna(axis=1).head(3)

或者:

將某1列(series格式)中的 inf 替換為數(shù)值

import numpy as np
df['Col'][np.isinf(df['Col'])] = -1

將某1列(series格式)中的 inf 替換為NA值

import numpy as np
df['Col'][np.isinf(df['Col'])] = np.nan

2.4. 用df.fillna(value=values) 將缺失的數(shù)據(jù)進行填充

填充缺失值:

fillna(method=‘ffill'/‘bfill', # ffill向前填充;bfill向后填充。
axis=0/1 # 按行/列進行填充
)

例如:

data.fillna(0, inplace=True) # 填充0
data.fillna(method=‘ffill') # 按列,向前進行填充
data.fillna(method=‘bfill',axis=1) # 按照行,向后進行填充
data.fillna(data.mean()) # 填充平均值
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[1,np.nan],
                   'B':[21,3],
                   'C':[4,5]})
#制造inf
df['D'] = df['C']/0
print(df)
#替換正inf為NaN
df.replace(np.inf, np.nan, inplace=True)
df['E'] = -df['B']/0
print(df)
#替換正、負inf為0
df.replace([np.inf, -np.inf], 0, inplace=True)
#單列替換NaN為10
df['A'].fillna(10, inplace=True)
#替換NaN為0
df.replace(np.nan, 0, inplace=True)
print(df)

3. Pandas處理缺失值函數(shù)小結

1.isnullnotnull: 檢測是否是空值,可用于dataframe和Series

2.dropna: 丟棄,刪除缺失值

  • axis: 刪除行還是列,{0 ro ‘index’, 1 or ‘columns’}, default 0
  • how: 如果等于any則任何值為空都刪除,如果等于all則所有值都為空時才刪除
  • inplace: 如果為True則修改當前dataframe, 否則返回新的dataframe

3.fillna: 填充空值

  • value: 用于填充的值,可以是單個值,或者字典(key是列名,value是值)
  • method: 等于ffill使用前一個部位空的值填充forword fill; 等于bfill使用后一個部位空的值天充backword fill
  • axis: 按行還是按列填充,{0 ro ‘index’, 1 or ‘columns’}
  • inplace: 如果為True則修改當前dataframe, 否則返回新的dataframe

4.replace: 替換,replace(to_replace, value) 前面是需要替換的值,后面是替換后的值。

  • inplace: 如果為True則修改當前dataframe, 否則返回新的dataframe

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • pycharm 創(chuàng)建py文件總是為txt格式的問題及解決

    pycharm 創(chuàng)建py文件總是為txt格式的問題及解決

    這篇文章主要介紹了pycharm 創(chuàng)建py文件總是為txt格式的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python 自由定制表格的實現(xiàn)示例

    Python 自由定制表格的實現(xiàn)示例

    這篇文章主要介紹了Python 自由定制表格的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Python中修復中文亂碼的7種場景方法介紹

    Python中修復中文亂碼的7種場景方法介紹

    這篇文章主要介紹了多種修復中文亂碼的Python方法,包括UTF-8被錯誤解碼為latin-1的常見解決方案,自動檢測編碼方法等,感興趣的小伙伴可以了解下
    2026-02-02
  • 使用Python pip怎么升級pip

    使用Python pip怎么升級pip

    這篇文章主要介紹了使用Python pip怎么升級pip,本文給大家分享方法和實現(xiàn)步驟對python pip升級pip相關知識感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • python中閉包Closure函數(shù)作為返回值的方法示例

    python中閉包Closure函數(shù)作為返回值的方法示例

    閉包(closure)是函數(shù)式編程的重要的語法結構,Python也支持這一特性,下面這篇文章主要給大家介紹了關于python中閉包Closure函數(shù)作為返回值的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • Python實現(xiàn)批量自動整理文件

    Python實現(xiàn)批量自動整理文件

    本文將利用Python制作一個批量自動整理文件的小工具,可以自定義整理某一個路徑下面的所有需要被整理的文件。感興趣的小伙伴可以了解一下
    2022-03-03
  • python全局解釋器GIL鎖機制詳解

    python全局解釋器GIL鎖機制詳解

    我們要知道一點GIL并不是Python的特性,它是Python解釋器Cpython引入的一個概念,下面這篇文章主要給大家介紹了關于python全局解釋器GIL鎖機制的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 讓你分分鐘學會python條件語句

    讓你分分鐘學會python條件語句

    學好Python和條件語句,將方便有效提高工作效率,這篇文章主要給大家介紹了關于python條件語句的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • Numpy數(shù)組轉置的兩種實現(xiàn)方法

    Numpy數(shù)組轉置的兩種實現(xiàn)方法

    下面小編就為大家分享一篇Numpy數(shù)組轉置的兩種實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python 控制終端輸出文字的實例

    Python 控制終端輸出文字的實例

    今天小編就為大家分享一篇Python 控制終端輸出文字的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

宜昌市| 大丰市| 兴化市| 台前县| 越西县| 平乡县| 霍州市| 柳州市| 旌德县| 沙洋县| 星子县| 中宁县| 灵丘县| 彭州市| 石渠县| 清镇市| 镇平县| 淳安县| 普兰店市| 清镇市| 五指山市| 鄂托克旗| 青冈县| 佳木斯市| 郴州市| 华容县| 兴化市| 九江市| 容城县| 沙洋县| 星子县| 桃园县| 固镇县| 云和县| 中牟县| 阿瓦提县| 上杭县| 太白县| 宜阳县| 依安县| 徐州市|