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

關(guān)于Pandas缺失值inf與nan的處理實(shí)踐

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

1. Pandas缺失值

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

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

1.1. Pandas中的空值

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

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

需要特別注意三點(diǎn):

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

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

3.None是 一個(gè) Python 對(duì)象

  • 不可以用在任意的 NumPy 或 Pandas 數(shù)組里,只用于列表且數(shù)據(jù)類(lèi)型是 Object。
  • 默認(rèn) Pandas 會(huì)將 None 轉(zhuǎn)換成 NAN
  • 對(duì)包含 None 元素的數(shù)組進(jìn)行計(jì)算(如: sum, min, max)會(huì)拋出 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']})

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

1.2. Pandas中的正負(fù)無(wú)窮

對(duì)于特別大的數(shù)字,或者除數(shù)為0時(shí),將產(chǎn)生正負(fù)無(wú)窮,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. 自定義缺失值

自定義缺失值有很多不同的形式,如上面剛說(shuō)的空字符串和空格(當(dāng)然,一般不用這兩個(gè),因?yàn)榭雌饋?lái)不夠直觀)。

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

對(duì)于這些缺失值,在獲取數(shù)據(jù)時(shí)通常會(huì)用一些符號(hào)之類(lèi)的數(shù)據(jù)來(lái)代替,如問(wèn)號(hào)?,斜杠/,字母NA等。

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

2.1. 用數(shù)組過(guò)濾

  • 用 df.isin([np.nan, np.inf, -np.inf]) 方法
  • 用 df.any() 方法只要包含任意一個(gè)缺失的值,any()一個(gè)序列中滿足一個(gè)True,則返回True
  • 最后,用 布爾數(shù)組來(lái)進(jìn)行切分。
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),把正負(fù)無(wú)窮為空值np.nan
  • 再用df.notnull(),篩選非空數(shù)據(jù)
  • 再用df.all(),all()一個(gè)序列中所有值為T(mén)rue時(shí),返回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對(duì)象,刪除缺失值的方式:

  • 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ù)進(jìn)行填充

填充缺失值:

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

例如:

data.fillna(0, inplace=True) # 填充0
data.fillna(method=‘ffill') # 按列,向前進(jìn)行填充
data.fillna(method=‘bfill',axis=1) # 按照行,向后進(jìn)行填充
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)
#替換正、負(fù)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ù)小結(jié)

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

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

  • axis: 刪除行還是列,{0 ro ‘index’, 1 or ‘columns’}, default 0
  • how: 如果等于any則任何值為空都刪除,如果等于all則所有值都為空時(shí)才刪除
  • inplace: 如果為T(mén)rue則修改當(dāng)前dataframe, 否則返回新的dataframe

3.fillna: 填充空值

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

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

  • inplace: 如果為T(mén)rue則修改當(dāng)前dataframe, 否則返回新的dataframe

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    Python中修復(fù)中文亂碼的7種場(chǎng)景方法介紹

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

    使用Python pip怎么升級(jí)pip

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

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

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

    Python實(shí)現(xiàn)批量自動(dòng)整理文件

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

    python全局解釋器GIL鎖機(jī)制詳解

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

    讓你分分鐘學(xué)會(huì)python條件語(yǔ)句

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

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

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

    Python 控制終端輸出文字的實(shí)例

    今天小編就為大家分享一篇Python 控制終端輸出文字的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論

大关县| 永仁县| 富民县| 喀什市| 公安县| 吉水县| 溧阳市| 遂宁市| 金平| 云阳县| 称多县| 集贤县| 邹平县| 临桂县| 固阳县| 睢宁县| 鹤庆县| 天台县| 富锦市| 东台市| 朝阳市| 清苑县| 西和县| 理塘县| 即墨市| 肇源县| 邛崃市| 历史| 班戈县| 梧州市| 务川| 年辖:市辖区| 保靖县| 上高县| 蓬溪县| 隆子县| 兰西县| 科尔| 金门县| 新蔡县| 印江|