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

pandas dataframe統(tǒng)計(jì)填充空值方式

 更新時(shí)間:2024年02月22日 15:37:05   作者:bitcarmanlee  
這篇文章主要介紹了pandas dataframe統(tǒng)計(jì)填充空值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.判斷dataframe是否有空值

def t2():
    df = pd.DataFrame({
        'name': ['lili', 'lucy','pegga','alin',np.nan],
        'age': [18, 16, np.nan, 23, np.nan],
        'salary': [np.nan, 300, np.nan, 1000, 800]
    })
    df_contains_nan = df.isnull()
    print(df_contains_nan)

    df_contains_nan_2 = df.isna()
    print(df_contains_nan_2)

上面的代碼將輸出

    name    age  salary
0  False  False    True
1  False  False   False
2  False   True    True
3  False  False   False
4   True   True   False
    name    age  salary
0  False  False    True
1  False  False   False
2  False   True    True
3  False  False   False
4   True   True   False

isnull,isna方法都是判斷df中的元素是否為空,然后輸出True/False。

要判斷df中是否有空元素,只需要稍加改變

def t3():
    df = pd.DataFrame({
        'name': ['lili', 'lucy','pegga','alin',np.nan],
        'age': [18, 16, np.nan, 23, np.nan],
        'salary': [np.nan, 300, np.nan, 1000, 800]
    })
    contains_nan = df.isnull().values.any()
    print(contains_nan)

any方法只要ndarray中有任意一個(gè)元素為T(mén)rue就返回True。

    def any(self, axis=None, out=None, keepdims=False): # real signature unknown; restored from __doc__
        """
        a.any(axis=None, out=None, keepdims=False)
        
            Returns True if any of the elements of `a` evaluate to True.
        
            Refer to `numpy.any` for full documentation.
        
            See Also
            --------
            numpy.any : equivalent function
        """
        pass

2.統(tǒng)計(jì)空值個(gè)數(shù)

def t4():
    df = pd.DataFrame({
        'name': ['lili', 'lucy','pegga','alin',np.nan],
        'age': [18, 16, np.nan, 23, np.nan],
        'salary': [np.nan, 300, np.nan, 1000, 800]
    })

    # 每一列有多少個(gè)nan
    nan_column = df.isnull().values.astype(int).sum(axis=0)
    # 各列的nan個(gè)數(shù)
    nan_column_name = df.isnull().sum()
    print(nan_column)
    print('*'*10)
    print(nan_column_name)
    print('*'*10)
    # nan的總個(gè)數(shù)
    nan_all = df.isnull().sum().sum()
    print(nan_all)

[1 2 2]
**********
name      1
age       2
salary    2
dtype: int64
**********
5

上面的代碼,展示了統(tǒng)計(jì)每行/列空值的個(gè)數(shù),以及所有空值的個(gè)數(shù)。

3.按列填充空值

def t5():
    df = pd.DataFrame({
        'name': ['lili', 'lucy','pegga','alin',np.nan],
        'age': [18, 16, np.nan, 23, np.nan],
        'salary': [np.nan, 300, np.nan, 1000, 800]
    })
    print(df)

    df.name = df.name.fillna('unknown')
    df.age = df.age.fillna(df.age.mean())
    df.salary = df.salary.fillna(df.salary.max())

    print(df)

    name   age  salary
0   lili  18.0     NaN
1   lucy  16.0   300.0
2  pegga   NaN     NaN
3   alin  23.0  1000.0
4    NaN   NaN   800.0
      name   age  salary
0     lili  18.0  1000.0
1     lucy  16.0   300.0
2    pegga  19.0  1000.0
3     alin  23.0  1000.0
4  unknown  19.0   800.0

上面的代碼,分別對(duì)name, age, salary列按固定值,當(dāng)前列平均值,當(dāng)前列最大值填充。

fillna函數(shù)有inplace參數(shù),下面代碼的效果與之前填充一致。

def t52():
    df = pd.DataFrame({
        'name': ['lili', 'lucy','pegga','alin',np.nan],
        'age': [18, 16, np.nan, 23, np.nan],
        'salary': [np.nan, 300, np.nan, 1000, 800]
    })
    print(df)

    df.name.fillna('unknown', inplace=True)
    df.age.fillna(df.age.mean(), inplace=True)
    df.salary.fillna(df.salary.max(), inplace=True)
    print(df)

4.按分組平均值填充

def t6():
    df = pd.DataFrame({
        'level': ['A','A','A','A','B','B','B','B','C','C','C'],
        'score': [2,1,3,np.nan,4,6,5,np.nan,7,9,np.nan],
    })

    fun = lambda x: x.fillna(df.groupby('level').score.mean()[x.level])
    df = df.apply(lambda x: fun(x), axis=1)
    # 以下一行代碼也可以實(shí)現(xiàn)相同功能
    #df = df.apply(lambda x: x.fillna(df.groupby('level').score.mean()[x.level]), axis=1)
    print(df)

上面的代碼,將score按level分組的平均值填充。

fun傳入一行數(shù)據(jù),然后通過(guò)分組值來(lái)獲取當(dāng)前分組的平均值,最后利用fillna來(lái)填充這個(gè)平均值即可。

代碼輸出如下:

   level  score
0      A    2.0
1      A    1.0
2      A    3.0
3      A    2.0
4      B    4.0
5      B    6.0
6      B    5.0
7      B    5.0
8      C    7.0
9      C    9.0
10     C    8.0

總結(jié)

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

相關(guān)文章

  • Pytho的HTTP交互httpx包模塊使用詳解

    Pytho的HTTP交互httpx包模塊使用詳解

    Python 的 httpx 包是一個(gè)用于 HTTP 交互的一個(gè)優(yōu)秀且靈活的模塊。本文進(jìn)行詳細(xì)的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法詳解

    Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Flask-WTF針對(duì)CSRF攻擊的防護(hù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • python打包exe開(kāi)機(jī)自動(dòng)啟動(dòng)的實(shí)例(windows)

    python打包exe開(kāi)機(jī)自動(dòng)啟動(dòng)的實(shí)例(windows)

    今天小編就為大家分享一篇python打包exe開(kāi)機(jī)自動(dòng)啟動(dòng)的實(shí)例(windows),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python判斷telnet通不通的實(shí)例

    Python判斷telnet通不通的實(shí)例

    今天小編就為大家分享一篇Python判斷telnet通不通的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python Tornado 實(shí)現(xiàn)SSE服務(wù)端主動(dòng)推送方案

    Python Tornado 實(shí)現(xiàn)SSE服務(wù)端主動(dòng)推送方案

    SSE是Server-Sent Events 的簡(jiǎn)稱(chēng),是一種服務(wù)器端到客戶端(瀏覽器)的單項(xiàng)消息推送,本文主要探索兩個(gè)方面的實(shí)踐一個(gè)是客戶端發(fā)送請(qǐng)求,服務(wù)端的返回是分多次進(jìn)行傳輸?shù)?直到傳輸完成,這種情況下請(qǐng)求結(jié)束后,考慮關(guān)閉SSE,所以這種連接可以認(rèn)為是暫時(shí)的,感興趣的朋友一起看看吧
    2024-01-01
  • 在Django中管理Users和Permissions以及Groups的方法

    在Django中管理Users和Permissions以及Groups的方法

    這篇文章主要介紹了在Django中管理Users和Permissions以及Groups的方法,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python中格式化字符串的方法總結(jié)

    Python中格式化字符串的方法總結(jié)

    字符串格式化是一項(xiàng)常見(jiàn)且重要的操作,用于動(dòng)態(tài)生成包含變量?jī)?nèi)容的字符串,本文為大家整理一些常用的格式化字符串方法,希望對(duì)大家有所幫助
    2024-10-10
  • 在pandas中遍歷DataFrame行的實(shí)現(xiàn)方法

    在pandas中遍歷DataFrame行的實(shí)現(xiàn)方法

    這篇文章主要介紹了在pandas中遍歷DataFrame行的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python持久性管理pickle模塊詳細(xì)介紹

    python持久性管理pickle模塊詳細(xì)介紹

    這篇文章主要介紹了python持久性管理pickle模塊詳細(xì)介紹,本文講解了什么是持久性、一些經(jīng)過(guò) pickle 的 Python等內(nèi)容,并講給出了18個(gè)使用示例,需要的朋友可以參考下
    2015-02-02
  • python使用openpyxl庫(kù)讀寫(xiě)Excel表格的方法(增刪改查操作)

    python使用openpyxl庫(kù)讀寫(xiě)Excel表格的方法(增刪改查操作)

    這篇文章主要介紹了python使用openpyxl庫(kù)讀寫(xiě)Excel表格的方法(增刪改查操作),本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05

最新評(píng)論