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

Pandas中DataFrame中的nan值處理

 更新時間:2024年04月03日 11:00:58   作者:craftsman2020  
本文主要介紹了Pandas中DataFrame中的nan值處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 方法簡介

1.1 DataFrame.dropna()

DataFrame.dropna()方法的作用:是刪除含用空值或缺失值得行或列。
語法為:dropna(axis=0,how=‘any’,thresh=None,subset=None,inplace=False)
參數(shù):

  • axis:確定過濾的行或列,取值可以為
    (1) 0或index:刪除包含缺失值的行,默認為0。
    (2) 1或columns:刪除包含缺失值的列。
  • how:確定過濾的標準,取值可以為:
    (1)any:默認值,如果存在NaN值,就刪除該行或該列。//有一個就刪除行或列
    (2)all:如果所有值都是NaN值,就刪除該行或該列。 //全部都是才刪除行或列
  • thresh:表示有效數(shù)據(jù)量的最小要求,比如thresh=3,要求該行或該列至少有三個不是NaN值時將其保留。
  • subset:表示在特定的字集中尋找NaN值
  • inplace:表示是否在原數(shù)據(jù)上操作,如果設為True,則表示直接修改原數(shù)據(jù);如果設為False,則表示修改原數(shù)據(jù)的副本,返回新數(shù)據(jù)

1.2 .DataFrame.fillna()

語法為:fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
參數(shù):

  • value:用于填充的空值的值。
  • method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None。定義了填充空值的方法, pad / ffill表示用前面行/列的值,填充當前行/列的空值, backfill / bfill表示用后面行/列的值,填充當前行/列的空值。
  • axis:軸。0或’index’,表示按行刪除;1或’columns’,表示按列刪除。
  • inplace:是否原地替換。布爾值,默認為False。如果為True,則在原DataFrame上進行操作,返回值為None。
  • limit:int, default None。如果method被指定,對于連續(xù)的空值,這段連續(xù)區(qū)域,最多填充前 limit 個空值(如果存在多段連續(xù)區(qū)域,每段最多填充前 limit 個空值)。如果method未被指定, 在該axis下,最多填充前 limit 個空值(不論空值連續(xù)區(qū)間是否間斷)
  • downcast:dict, default is None,字典中的項為,為類型向下轉換規(guī)則。或者為字符串“infer”,此時會在合適的等價類型之間進行向下轉換,比如float64 to int64 if possible。

2. 案例

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(32).reshape(8, 4), columns=list("abcd"))
df.loc[1, 'a'] = 2
df.loc[1, 'c'] = 2.0
df.loc[6, 'c'] = np.nan
df.loc[3, 'c'] = 10
df.loc[3, ['c', 'd']] = np.nan
df["year"] = '2023'
df["date"] = ['08-25','08-26','08-27','08-28','08-29','08-30','08-31','09-01']
# 合并數(shù)據(jù)
df["ydate"] =df["year"].map(str) +"-"+ df["date"].map(str) 
df["高溫"] = ['15°',  '16°', '20°', '19°', '20°',  '22°', '24°', '23°']
df["低溫"] = ['10°',  '11°', '18°', '17°', '10°',  '18°', '20°', '17°']
df["空氣質(zhì)量"] = ['優(yōu)', '良', '優(yōu)', '優(yōu)', '差', '良', '優(yōu)', np.nan]
print(df)

    a   b     c     d  year   date       ydate   高溫   低溫 空氣質(zhì)量
0   0   1   2.0   3.0  2023  08-25  2023-08-25  15°  10°    優(yōu)
1   2   5   2.0   7.0  2023  08-26  2023-08-26  16°  11°    良
2   8   9  10.0  11.0  2023  08-27  2023-08-27  20°  18°    優(yōu)
3  12  13   NaN   NaN  2023  08-28  2023-08-28  19°  17°    優(yōu)
4  16  17  18.0  19.0  2023  08-29  2023-08-29  20°  10°    差
5  20  21  22.0  23.0  2023  08-30  2023-08-30  22°  18°    良
6  24  25   NaN  27.0  2023  08-31  2023-08-31  24°  20°    優(yōu)
7  28  29  30.0  31.0  2023  09-01  2023-09-01  23°  17°  NaN

2.1 刪除全部為NaN的行

df1 = df.copy()
df1.loc[8, :] = np.nan
df1

       a       b       c       d     year       date       ydate       高溫     低溫     空氣質(zhì)量
0     0.0     1.0     2.0     3.0     2023     08-25     2023-08-25     15°     10°     優(yōu)
1     2.0     5.0     2.0     7.0     2023     08-26     2023-08-26     16°     11°     良
2     8.0     9.0     10.0     11.0     2023     08-27     2023-08-27     20°     18°     優(yōu)
3     12.0     13.0     NaN     NaN     2023     08-28     2023-08-28     19°     17°     優(yōu)
4     16.0     17.0     18.0     19.0     2023     08-29     2023-08-29     20°     10°     差
5     20.0     21.0     22.0     23.0     2023     08-30     2023-08-30     22°     18°     良
6     24.0     25.0     NaN     27.0     2023     08-31     2023-08-31     24°     20°     優(yōu)
7     28.0     29.0     30.0     31.0     2023     09-01     2023-09-01     23°     17°     NaN
8     NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN 

df1 = df.dropna(axis=0, how='all')
df1
abcdyeardateydate高溫低溫空氣質(zhì)量
00.01.02.03.0202308-252023-08-2515°10°優(yōu)
12.05.02.07.0202308-262023-08-2616°11°
28.09.010.011.0202308-272023-08-2720°18°優(yōu)
312.013.0NaNNaN202308-282023-08-2819°17°優(yōu)
416.017.018.019.0202308-292023-08-2920°10°
520.021.022.023.0202308-302023-08-3022°18°
624.025.0NaN27.0202308-312023-08-3124°20°優(yōu)
728.029.030.031.0202309-012023-09-0123°17°NaN

2.2 刪除包含NaN的行

df2 = df.dropna(axis=0, how='any')
df2
abcdyeardateydate高溫低溫空氣質(zhì)量
00.01.02.03.0202308-252023-08-2515°10°優(yōu)
12.05.02.07.0202308-262023-08-2616°11°
28.09.010.011.0202308-272023-08-2720°18°優(yōu)
416.017.018.019.0202308-292023-08-2920°10°
520.021.022.023.0202308-302023-08-3022°18°

2.3 刪除包含NaN的列

df3 = df.dropna(axis=1, how='any')
df3
abyeardateydate高溫低溫
001202308-252023-08-2515°10°
125202308-262023-08-2616°11°
289202308-272023-08-2720°18°
31213202308-282023-08-2819°17°
41617202308-292023-08-2920°10°
52021202308-302023-08-3022°18°
62425202308-312023-08-3124°20°
72829202309-012023-09-0123°17°

2.4 刪除全部為NaN的列

df4 = df.copy()
df4["unknow"] = np.nan
df4
abcdyeardateydate高溫低溫空氣質(zhì)量unknow
0012.03.0202308-252023-08-2515°10°優(yōu)NaN
1252.07.0202308-262023-08-2616°11°NaN
28910.011.0202308-272023-08-2720°18°優(yōu)NaN
31213NaNNaN202308-282023-08-2819°17°優(yōu)NaN
4161718.019.0202308-292023-08-2920°10°NaN
5202122.023.0202308-302023-08-3022°18°NaN
62425NaN27.0202308-312023-08-3124°20°優(yōu)NaN
7282930.031.0202309-012023-09-0123°17°NaNNaN
df4 = df4.dropna(axis=1, how='all')
df4
abcdyeardateydate高溫低溫空氣質(zhì)量
0012.03.0202308-252023-08-2515°10°優(yōu)
1252.07.0202308-262023-08-2616°11°
28910.011.0202308-272023-08-2720°18°優(yōu)
31213NaNNaN202308-282023-08-2819°17°優(yōu)
4161718.019.0202308-292023-08-2920°10°
5202122.023.0202308-302023-08-3022°18°
62425NaN27.0202308-312023-08-3124°20°優(yōu)
7282930.031.0202309-012023-09-0123°17°NaN

2.5 刪除指定列是NaN的行

刪除指定某一列有nan,這樣即可定位到所在行的index,然后對該index進行drop操作即可

df[np.isnan(df['c'])].index #定位某一列是否有nan

輸出:

Index([3, 6], dtype='int64')

# 直接drop對應indx即可刪除該行
df5 = df.drop(df[np.isnan(df['c'])].index)
df5
abcdyeardateydate高溫低溫空氣質(zhì)量
0012.03.0202308-252023-08-2515°10°優(yōu)
1252.07.0202308-262023-08-2616°11°
28910.011.0202308-272023-08-2720°18°優(yōu)
4161718.019.0202308-292023-08-2920°10°
5202122.023.0202308-302023-08-3022°18°
7282930.031.0202309-012023-09-0123°17°NaN

2.6 刪除指定的兩列都是空的行

df6 = df.dropna(axis=0, how='all', subset=['c', 'd']) 
df6
abcdyeardateydate高溫低溫空氣質(zhì)量
0012.03.0202308-252023-08-2515°10°優(yōu)
1252.07.0202308-262023-08-2616°11°
28910.011.0202308-272023-08-2720°18°優(yōu)
4161718.019.0202308-292023-08-2920°10°
5202122.023.0202308-302023-08-3022°18°
62425NaN27.0202308-312023-08-3124°20°優(yōu)
7282930.031.0202309-012023-09-0123°17°NaN

2.7 篩選出NaN的數(shù)據(jù)

df_nan = df[df['d'].isna()]
df_nan
abcdyeardateydate高溫低溫空氣質(zhì)量
31213NaNNaN202308-282023-08-2819°17°優(yōu)

2.8 篩選出非NaN的數(shù)據(jù)

df_notnan = df[~df['d'].isna()]
df_notnan
abcdyeardateydate高溫低溫空氣質(zhì)量
0012.03.0202308-252023-08-2515°10°優(yōu)
1252.07.0202308-262023-08-2616°11°
28910.011.0202308-272023-08-2720°18°優(yōu)
4161718.019.0202308-292023-08-2920°10°
5202122.023.0202308-302023-08-3022°18°
62425NaN27.0202308-312023-08-3124°20°優(yōu)
7282930.031.0202309-012023-09-0123°17°NaN

2.9 替換NaN值

df9 = df.fillna('')  # 將nan替換為''
df9
abcdyeardateydate高溫低溫空氣質(zhì)量
0012.03.0202308-252023-08-2515°10°優(yōu)
1252.07.0202308-262023-08-2616°11°
28910.011.0202308-272023-08-2720°18°優(yōu)
31213202308-282023-08-2819°17°優(yōu)
4161718.019.0202308-292023-08-2920°10°
5202122.023.0202308-302023-08-3022°18°
6242527.0202308-312023-08-3124°20°優(yōu)
7282930.031.0202309-012023-09-0123°17°

2.10 多條件篩選

nan_df = df[(df['高溫'].str.len() <= 2) | (df['空氣質(zhì)量'].isna())]
nan_df
abcdyeardateydate高溫低溫空氣質(zhì)量
7282930.031.0202309-012023-09-0123°17°NaN

總結

到此這篇關于Pandas中DataFrame中的nan值處理的文章就介紹到這了,更多相關Pandas DataFrame nan值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python tkinter三種布局實例詳解

    Python tkinter三種布局實例詳解

    這篇文章主要介紹了Python tkinter三種布局實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • pycharm無法安裝第三方庫的問題及解決方法以scrapy為例(圖解)

    pycharm無法安裝第三方庫的問題及解決方法以scrapy為例(圖解)

    這篇文章主要介紹了pycharm無法安裝第三方庫的解決辦法以scrapy為例,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python進行數(shù)據(jù)可視化Plotly與Dash的應用小結

    Python進行數(shù)據(jù)可視化Plotly與Dash的應用小結

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文主要介紹了Python進行數(shù)據(jù)可視化Plotly與Dash的應用小結,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • pandas 時間格式轉換的實現(xiàn)

    pandas 時間格式轉換的實現(xiàn)

    這篇文章主要介紹了pandas 時間格式轉換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python實現(xiàn)AES加密解密

    python實現(xiàn)AES加密解密

    這篇文章主要為大家詳細介紹了python實現(xiàn)AES加密解密的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python通過get,post方式發(fā)送http請求和接收http響應的方法

    python通過get,post方式發(fā)送http請求和接收http響應的方法

    這篇文章主要介紹了python通過get,post方式發(fā)送http請求和接收http響應的方法,涉及Python使用urllib模塊與urllib2模塊實現(xiàn)get與post發(fā)送數(shù)據(jù)的相關技巧,需要的朋友可以參考下
    2015-05-05
  • python 使用元類type創(chuàng)建類

    python 使用元類type創(chuàng)建類

    這篇文章主要介紹了Python 使用元類type創(chuàng)建類,結合實例形式詳細分析了Python元類的概念、功能及元類type創(chuàng)建類對象的常見應用技巧,需要的朋友可以參考一下文章的具體內(nèi)容。希望對你有所幫助
    2021-10-10
  • django框架F&Q 聚合與分組操作示例

    django框架F&Q 聚合與分組操作示例

    這篇文章主要介紹了django框架F&Q 聚合與分組操作,結合實例形式詳細分析了Django框架查詢條件取對象中某列值、構建搜索條件以及聚合查詢等相關操作技巧,需要的朋友可以參考下
    2019-12-12
  • python中as用法實例分析

    python中as用法實例分析

    這篇文章主要介紹了python中as用法,實例分析了as的功能及相關使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Python Pandas數(shù)據(jù)分析工具用法實例

    Python Pandas數(shù)據(jù)分析工具用法實例

    這篇文章主要介紹了Python Pandas數(shù)據(jù)分析工具用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11

最新評論