亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用pandas進(jìn)行數(shù)據(jù)清洗的方法

 更新時間:2021年09月23日 16:04:58   作者:sharon@zhang  
本文主要介紹了利用pandas進(jìn)行數(shù)據(jù)清洗的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

我們有下面的一個數(shù)據(jù),利用其做簡單的數(shù)據(jù)分析。

在這里插入圖片描述

這是一家服裝店統(tǒng)計的會員數(shù)據(jù)。最上面的一行是列坐標(biāo),最左側(cè)一列是行坐標(biāo)。列坐標(biāo)中,第 0 列代表的是序號,第 1 列代表的會員的姓名,第 2 列代表年齡,第 3 列代表體重,第 4~6 列代表男性會員的三圍尺寸,第 7~9 列代表女性會員的三圍尺寸。

數(shù)據(jù)清洗規(guī)則總結(jié)為以下 4 個關(guān)鍵點,統(tǒng)一起來叫“完全合一”,下面來解釋下:

  • 完整性:單條數(shù)據(jù)是否存在空值,統(tǒng)計的字段是否完善。
  • 全面性:觀察某一列的全部數(shù)值,比如在 Excel 表中,我們選中一列,可以看到該列的平均值、最大值、最小值。我們可以通過常識來判斷該列是否有問題,比如:數(shù)據(jù)定義、單位標(biāo)識、數(shù)值本身。
  • 合法性:數(shù)據(jù)的類型、內(nèi)容、大小的合法性。比如數(shù)據(jù)中存在非 ASCII 字符,性別存在了未知,年齡超過了 150 歲等。
  • 唯一性:數(shù)據(jù)是否存在重復(fù)記錄,因為數(shù)據(jù)通常來自不同渠道的匯總,重復(fù)的情況是常見的。行數(shù)據(jù)、列數(shù)據(jù)都需要是唯一的,比如一個人不能重復(fù)記錄多次,且一個人的體重也不能在列指標(biāo)中重復(fù)記錄多次。

1、完整性

1.1 缺失值

一般情況下,由于數(shù)據(jù)量巨大,在采集數(shù)據(jù)的過程中,會出現(xiàn)有些數(shù)據(jù)單元沒有被采集到,也就是數(shù)據(jù)存在缺失。通常面對這種情況,我們可以采用以下三種方法:

  • 刪除:刪除數(shù)據(jù)缺失的記錄
  • 均值:使用當(dāng)前列的均值填充
  • 高頻:使用當(dāng)前列出現(xiàn)頻率最高的數(shù)據(jù)

比如我們相對data[‘Age']中缺失的數(shù)值使用平均年齡進(jìn)行填充,可以寫:

df['Age'].fillna(df['Age'].mean(), inplace=True)

如果我們用最高頻的數(shù)據(jù)進(jìn)行填充,可以先通過 value_counts 獲取 Age 字段最高頻次 age_maxf,然后再對 Age 字段中缺失的數(shù)據(jù)用 age_maxf 進(jìn)行填充:

age_maxf = train_features['Age'].value_counts().index[0]
train_features['Age'].fillna(age_maxf, inplace=True)

1.2 空行

我們發(fā)現(xiàn)數(shù)據(jù)中有一個空行,除了 index 之外,全部的值都是 NaN。Pandas 的 read_csv() 并沒有可選參數(shù)來忽略空行,這樣,我們就需要在數(shù)據(jù)被讀入之后再使用 dropna() 進(jìn)行處理,刪除空行。

# 刪除全空的行
df.dropna(how='all',inplace=True) 

2、全面性

列數(shù)據(jù)的單位不統(tǒng)一

如果某一列數(shù)據(jù)其單位并不統(tǒng)一,比如weight列,有的單位為千克(Kgs),有的單位是磅(Lbs)。
這里我們使用千克作為統(tǒng)一的度量單位,將磅轉(zhuǎn)化為千克:

# 獲取 weight 數(shù)據(jù)列中單位為 lbs 的數(shù)據(jù)
rows_with_lbs = df['weight'].str.contains('lbs').fillna(False)
print df[rows_with_lbs]
# 將 lbs轉(zhuǎn)換為 kgs, 2.2lbs=1kgs
for i,lbs_row in df[rows_with_lbs].iterrows():
  # 截取從頭開始到倒數(shù)第三個字符之前,即去掉lbs。
  weight = int(float(lbs_row['weight'][:-3])/2.2)
  df.at[i,'weight'] = '{}kgs'.format(weight) 

3、合理性

 非ASCII字符

假設(shè)在數(shù)據(jù)集中 Firstname 和 Lastname 有一些非 ASCII 的字符。我們可以采用刪除或者替換的方式來解決非 ASCII 問題,這里我們使用刪除方法,也就是用replace方法:

# 刪除非 ASCII 字符
df['first_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)
df['last_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)

4、唯一性

4.1 一列有多個參數(shù)

假設(shè)姓名(Name)包含了兩個參數(shù) Firstname和Lastname。為了達(dá)到數(shù)據(jù)整潔的目的,我們將 Name 列拆分成 Firstname 和 Lastname 兩個字段。我們使用 Python 的 split 方法,str.split(expand=True),將列表拆成新的列,再將原來的 Name 列刪除。

# 切分名字,刪除源數(shù)據(jù)列
df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

4.2 重復(fù)數(shù)據(jù)

我們校驗一下數(shù)據(jù)中是否存在重復(fù)記錄。如果存在重復(fù)記錄,就使用 Pandas 提供的 drop_duplicates() 來刪除重復(fù)數(shù)據(jù)。

# 刪除重復(fù)數(shù)據(jù)行
df.drop_duplicates(['first_name','last_name'],inplace=True)

這樣,我們就將上面案例中中的會員數(shù)據(jù)進(jìn)行了清理,來看看清理之后的數(shù)據(jù)結(jié)果。

在這里插入圖片描述

到此這篇關(guān)于利用pandas進(jìn)行數(shù)據(jù)清洗的方法的文章就介紹到這了,更多相關(guān)pandas 數(shù)據(jù)清洗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python實現(xiàn)的抓取騰訊視頻所有電影的爬蟲

    基于python實現(xiàn)的抓取騰訊視頻所有電影的爬蟲

    這篇文章主要介紹了用python實現(xiàn)的抓取騰訊視頻所有電影的爬蟲,這個程序使用芒果存, 所以大家需要下載使用mongodb才可以
    2016-04-04
  • Python機(jī)器學(xué)習(xí)之隨機(jī)梯度下降法的實現(xiàn)

    Python機(jī)器學(xué)習(xí)之隨機(jī)梯度下降法的實現(xiàn)

    如果當(dāng)我們數(shù)據(jù)量和樣本量非常大時,每一項都要參與到梯度下降,那么它的計算量時非常大的,所以我們需要采用隨機(jī)梯度下降法。本文介紹了Python實現(xiàn)隨機(jī)梯度下降法的方法,希望對大家有所幫助
    2023-02-02
  • 淺析Python四種數(shù)據(jù)類型

    淺析Python四種數(shù)據(jù)類型

    在這篇文章里,我們給大家分享了關(guān)于Python的四種數(shù)據(jù)類型相關(guān)知識點內(nèi)容,有興趣的朋友們參考下。
    2018-09-09
  • pip安裝庫報錯[notice]?A?new?release?of?pip?available:?22.2?->?22.2.2

    pip安裝庫報錯[notice]?A?new?release?of?pip?available:?22.2

    這篇文章主要給大家介紹了關(guān)于pip安裝庫報錯[notice]?A?new?release?of?pip?available:?22.2?->?22.2.2的相關(guān)資料,文中通過圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 通過案例解析python鴨子類型相關(guān)原理

    通過案例解析python鴨子類型相關(guān)原理

    這篇文章主要介紹了通過案例解析python鴨子類型相關(guān)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟)

    Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟)

    這篇文章主要介紹了Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Python中Celery異步任務(wù)隊列的具體使用

    Python中Celery異步任務(wù)隊列的具體使用

    Celery是一個用于處理分布式任務(wù)和作業(yè)隊列的異步任務(wù)隊列庫,本文主要介紹了Python中Celery異步任務(wù)隊列的具體使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Python+Opencv識別兩張相似圖片

    Python+Opencv識別兩張相似圖片

    python的功能實在太強(qiáng)大,這篇文章主要介紹了Python+Opencv識別兩張相似圖片的相關(guān)資料,文中利用Opencv庫進(jìn)行了更簡潔化的實現(xiàn),感興趣的小伙伴們可以參考一下
    2016-04-04
  • Python實現(xiàn)字典排序、按照list中字典的某個key排序的方法示例

    Python實現(xiàn)字典排序、按照list中字典的某個key排序的方法示例

    這篇文章主要介紹了Python實現(xiàn)字典排序、按照list中字典的某個key排序的方法,涉及Python字典與列表排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python+DeOldify實現(xiàn)老照片上色功能

    Python+DeOldify實現(xiàn)老照片上色功能

    DeOldify是一種技術(shù),以彩色和恢復(fù)舊的黑白圖像,甚至電影片段。它是由一個叫Jason?Antic的人開發(fā)和更新的。本文將利用DeOldify實現(xiàn)老照片上色功能,感興趣的可以了解一下
    2022-06-06

最新評論