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

pandas解決數(shù)據(jù)缺失、重復的方法與實踐過程

 更新時間:2023年06月21日 14:21:49   投稿:jingxian  
這篇文章主要介紹了pandas解決數(shù)據(jù)缺失、重復的方法與實踐過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1. 數(shù)據(jù)缺失

常見的數(shù)據(jù)缺失是指一條數(shù)據(jù)記錄中,某個數(shù)據(jù)項沒有值,延申到實際應用中,還有一種時間序列的缺失,例如按整點采集數(shù)據(jù),缺少某一時刻的數(shù)據(jù)(缺少一整行數(shù)據(jù))。

解決方法,如果不刪除數(shù)據(jù),一般進行插值處理,常見的補0,或者某個經(jīng)驗值,更科學的方法是線性插值,或者更復雜的算法。

1.1. 時間序列補充

例如,給定某個時間序列(逐時),中間缺少3點數(shù)據(jù),插值補充,并擴充數(shù)據(jù)到間隔半個小時。

代碼 1.

import pandas as pd
key = ['getTime','temp','text','humidity']
data = [['2023-04-30T00:00',7,'晴',57],
        ['2023-04-30T01:00',6,'晴',58],
        ['2023-04-30T02:00',6,'陰',55],
        ['2023-04-30T04:00',4,'晴',50]]
df = pd.DataFrame(data,columns=key)
df.index = df['getTime'].astype('datetime64')

補充時間序列,同時對數(shù)值列進行線性插值。

代碼 2.

df1 = df.resample('30min').interpolate(method='linear') 

注意:補充時間序列,需要DataFrame中的index是時間序列。

或者,新建時間序列表,再通過pd.merge關(guān)聯(lián)補足缺失時序。

代碼 3.

times = pd.date_range('2023-04-30 00:00', '2023-04-30 04:59', freq='1h') # 與上文采用標準國際時間 UTC
# times = pd.date_range('2023-04-30 00:00', '2023-04-30 04:59', freq='1h', tz='Asia/Shanghai')
df0 = pd.DataFrame(index=times)
df0 = pd.merge(left=df0,right=df,left_index=True,right_index=True,how='left')

1.2. 數(shù)據(jù)項缺失

1.2.1. 線性插值

代碼 4.

df0[['temp','humidity']] = df0[['temp','humidity']].interpolate(method='linear')  

或者,直接在時間序列補充時,線性插值,詳見代碼 2。

1.2.2. 復制上一條數(shù)據(jù)

如果是非數(shù)值型數(shù)據(jù),可以采用復制上一條數(shù)據(jù)內(nèi)容,同理,數(shù)值型也滿足。

代碼 5.

df0[['text','getTime']] = df0[['text','getTime']].fillna(method='ffill') 

1.2.3. 空值填充

例如,針對代碼 3的結(jié)果進行填充空值“6”。

代碼 6.

df0.fillna(6, inplace=True) 

2. 刪除重復數(shù)據(jù)行

首先,構(gòu)建重復數(shù)據(jù),合并同一張表。

代碼 7.

# 合并同表前兩條記錄
df2 = pd.concat([df,df.head(2)])

其中,head(2)是取表中前兩條記錄。

2.1. 刪除完全重復的行

刪除重復記錄。

代碼 8.

df2 = df2.drop_duplicates()

注意:這個是刪除完全相同的數(shù)據(jù)。

2.2. 刪除重復數(shù)據(jù)項

按某列(可以多個)進行去重,對于重復項,保留第一次出現(xiàn)的值。

代碼 9.

df2 = df2.drop_duplicates('text',keep='first')
df.drop_duplicates(subset=[‘A',‘B',‘C'],keep=‘first',inplace=True)

參數(shù)說明如下:

  • subset:表示要進去重的列名,默認為 None。
  • keep:有三個可選參數(shù),分別是 first、last、False,默認為 first,表示只保留第一次出現(xiàn)的重復項,刪除其余重復項,last 表示只保留最后一次出現(xiàn)的重復項,F(xiàn)alse 則表示刪除所有重復項。
  • inplace:布爾值參數(shù),默認為 False 表示刪除重復項后返回一個副本,若為 Ture 則表示直接在原數(shù)據(jù)上刪除重復項。

3. 按條件修改數(shù)據(jù)

按條件修改部分數(shù)據(jù)值,常用方法是apply()調(diào)用函數(shù)處理,也可以直接使用loc定位索引進行修改數(shù)據(jù),引用代碼 1產(chǎn)生的結(jié)果。

本文采用loc方式,按條件修改數(shù)據(jù)。

代碼 10.

df.loc[df.loc[(df.index>=pd.to_datetime('2023-04-30 01:00')) ].index,
        ['temp','humidity']] = df[['temp','humidity']].loc[(df.index>=pd.to_datetime('2023-04-30 01:00')) ]+10

按索引,具體列為查詢條件都可以。

4. 發(fā)現(xiàn)空值及處理

4.1. 空值查詢

查詢出空值,并替換同行數(shù)據(jù)中的另一項數(shù)據(jù),例如:查詢代碼 2的結(jié)果集,查詢“text”為空時的“temp”值,由“humidity”的值替換。

代碼 11.

df1.loc[df1[df1['text'].isnull()].index,'temp'] = df1['humidity'].loc[df1['text'].isnull()]

依據(jù)查詢代碼 2的結(jié)果集,查詢非空數(shù)據(jù)。

代碼 12.

df1 = df1.loc[~df1['text'].isnull()]

其中,~ 表示取反符號,.isnull() 方法用于判斷是否為空。

4.2. 刪除空值

依據(jù)查詢代碼 2的結(jié)果集,刪除空值的數(shù)據(jù)行。

代碼 13.

df1 = df1.dropna()

總結(jié)

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

相關(guān)文章

  • Windows8下安裝Python的BeautifulSoup

    Windows8下安裝Python的BeautifulSoup

    這篇文章主要介紹了Windows8下安裝Python的BeautifulSoup,本文著重講解安裝中出現(xiàn)的錯誤和解決方法,需要的朋友可以參考下
    2015-01-01
  • Python實現(xiàn)Web指紋識別實例

    Python實現(xiàn)Web指紋識別實例

    這篇文章主要來帶大家探索Web指紋識別:了解主流識別方式,從標題到指紋讀取網(wǎng)站信息的簡單方法,揭秘Web指紋識別 關(guān)鍵字、哈希和URL的魔力
    2023-10-10
  • 關(guān)于python 跨域處理方式詳解

    關(guān)于python 跨域處理方式詳解

    這篇文章主要介紹了關(guān)于python 跨域處理方式詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于Python編寫一個微博抽獎小程序

    基于Python編寫一個微博抽獎小程序

    本文將利用Python編寫一個微博抽獎小程序,夢想總是要有的,萬一靠在微博上自動抽獎暴富了呢~文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-05-05
  • Python鏈表排序相關(guān)問題解法示例

    Python鏈表排序相關(guān)問題解法示例

    這篇文章主要為大家介紹了Python鏈表排序相關(guān)問題解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Flask Paginate實現(xiàn)表格分頁的使用示例

    Flask Paginate實現(xiàn)表格分頁的使用示例

    flask_paginate是Flask框架的一個分頁擴展,用于處理分頁相關(guān)的功能,本文就來介紹一下Flask Paginate實現(xiàn)表格分頁的使用示例,感興趣的可以了解一下
    2023-11-11
  • 解決pycharm中的run和debug失效無法點擊運行

    解決pycharm中的run和debug失效無法點擊運行

    這篇文章主要介紹了解決pycharm中的run和debug失效無法點擊運行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python的列表推導式你了解嗎

    Python的列表推導式你了解嗎

    這篇文章主要為大家詳細介紹了Python的列表推導式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python中%是什么意思?python中百分號如何使用?

    Python中%是什么意思?python中百分號如何使用?

    最近在學習python過程中,發(fā)現(xiàn)了%的一些情況,這里就簡單介紹一下,,需要的朋友可以參考下
    2018-03-03
  • Flask 入門Web 微框架Hello Flask

    Flask 入門Web 微框架Hello Flask

    這篇文章主要介紹了 Flask 入門Web 微框架Hello Flask,F(xiàn)lask 是一個 Python 實現(xiàn)的 Web 微框架,之所以稱之為微框架,是因為 Flask 核心簡單且易于擴展,有兩個主要依賴,WSGI工具集:Werkzeug和模板引擎:Jinja2,Flask 只保留了 Web 開發(fā)的核心功能,需要的朋友可以參考一下
    2021-11-11

最新評論